| Server IP : 46.105.57.169 / Your IP : 216.73.216.67 Web Server : Apache System : Linux webm002.cluster120.gra.hosting.ovh.net 6.18.42-ovh-vps-grsec-zfs+ #1 SMP PREEMPT_DYNAMIC Wed Aug 5 15:59:48 CEST 2026 x86_64 User : verseaumee ( 152031) PHP Version : 8.5.7 Disable Function : _dyuweyrj4,_dyuweyrj4r,dl MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : OFF | Pkexec : OFF Directory : /home/verseaumee/middletvnew/wp-content/plugins/armember/core/classes/ |
Upload File : |
<?php
if (!class_exists('ARM_transaction'))
{
class ARM_transaction
{
function __construct()
{
global $wpdb, $ARMember, $arm_slugs;
add_action('wp_ajax_arm_transaction_ajax_action', array($this, 'arm_transaction_ajax_action'));
add_action('wp_ajax_arm_bulk_delete_transactions', array($this, 'arm_bulk_delete_transactions'));
add_action('wp_ajax_arm_filter_transactions_list', array($this, 'arm_filter_transactions_list'));
add_action('wp_ajax_arm_transaction_hide_show_columns', array($this, 'arm_transaction_hide_show_columns'));
// add_action('wp_ajax_arm_change_bank_transfer_status', array($this, 'arm_change_bank_transfer_status'));
add_action('wp_ajax_arm_preview_log_detail', array($this, 'arm_preview_log_detail'));
add_action('wp_ajax_arm_invoice_detail', array($this, 'arm_invoice_detail'));
add_action('wp_ajax_arm_save_manual_payment', array($this, 'arm_add_manual_payment'));
add_action('wp_ajax_arm_load_transactions', array($this, 'arm_load_transaction_grid'));
add_action('wp_ajax_arm_get_user_transactions_paging_action', array($this, 'arm_get_user_transactions_paging_action'));
add_action('wp_ajax_arm_filter_pp_transactions_list', array( $this, 'arm_filter_pp_transactions_list'));
add_filter('arm_payment_gateway_selection_options',array($this,'arm_payment_gateway_selection_options_func'),10,1);
add_filter('arm_payment_gateway_plans_selection_options',array($this,'arm_payment_gateway_plans_selection_options_func'));
add_filter('arm_admin_paid_post_transaction_html',array($this,'arm_admin_paid_post_transaction_html_func'),10,1);
add_filter( 'arm_get_transaction_tab_actions',array($this,'arm_get_transaction_tab_actions_func'),10,1);
}
function arm_get_transaction_tab_actions_func($arm_tab_actions){
global $arm_slugs,$arm_pay_per_post_feature;
if($arm_pay_per_post_feature->isPayPerPostFeature){
$arm_plan_tab_active = (!empty($_REQUEST['action']) && $_REQUEST['action'] == 'paid_post') ? '' : 'arm_selected_transaction_tab';
$arm_pp_tab_active = (!empty($_REQUEST['action']) && $_REQUEST['action'] == 'paid_post') ? 'arm_selected_transaction_tab' : '';
$arm_tab_actions = '<div class="arm_payment_transaction_tabs">
<input type="hidden" id="arm_selected_transaction_tab" value="membership"/>
<a class="arm_transaction_plan_tab arm_all_standard_tab '.$arm_plan_tab_active.'" href="'. admin_url( 'admin.php?page=' . $arm_slugs->transactions ).'">'. esc_html__('Membership Plans','ARMember').'
</a>
<a class="arm_transaction_paid_post_tab arm_all_standard_tab '.$arm_pp_tab_active.'" href="'. admin_url( 'admin.php?page=' . $arm_slugs->transactions . '&action=paid_post' ).'">'. esc_html__('Paid Post','ARMember').'
</a>
</div>';
}
return $arm_tab_actions;
}
function arm_admin_paid_post_transaction_html_func(){
if (file_exists(MEMBERSHIP_VIEWS_DIR . '/arm_transactions.php')) {
include( MEMBERSHIP_VIEWS_DIR . '/arm_transactions.php');
}
}
function arm_payment_gateway_selection_options_func($arm_selection_options)
{
global $wpdb, $ARMember, $arm_slugs, $arm_global_settings, $arm_members_class, $arm_manage_coupons, $arm_payment_gateways, $arm_subscription_plans,$arm_pay_per_post_feature, $arm_gift_version, $arm_manage_gift;
if($arm_pay_per_post_feature->isPayPerPostFeature || $arm_gift_version)
{
$arm_selection_options= '<tr class="form-field form-required arm_transaction_membership_plan_selection_wrapper arm_width_50_pct">
<th>
<label for="arm_plan_id">'. esc_html__('Select Plan Type','ARMember').'</label>
</th>
<td>
<div class="arm_transaction_option_input arm_plan_type_enable_radios">
<div class="arm_transaction_options_radio">
<input type="radio" class="arm_iradio arm_plan_type_chk" name="plan_type" value="0" id="arm_plan_type_plan" checked>
<label for="arm_plan_type_plan" class="arm_margin_left_0 arm_padding_right_10">'. esc_html__('Membership Plan', 'ARMember').'</label></div>';
if($arm_pay_per_post_feature->isPayPerPostFeature) {
$arm_selection_options .= '<div class="arm_transaction_options_radio"><input type="radio" class="arm_iradio arm_plan_type_chk" name="plan_type" value="1" id="arm_paid_post_plan_type">
<label for="arm_paid_post_plan_type" class="arm_margin_left_0 arm_padding_right_10">'. esc_html__('Paid Post', 'ARMember').'</label></div>';
}
if($arm_gift_version) {
$arm_selection_options .= '<div class="arm_transaction_options_radio"><input type="radio" class="arm_iradio arm_plan_type_chk" name="plan_type" value="2" id="arm_gift_plan_type">
<label for="arm_gift_plan_type" class="arm_margin_left_0 arm_padding_right_10">'. esc_html__('Gift', 'ARMember').'</label></div>';
}
$arm_selection_options .= '</div>
</td>
</tr>';
}
else
{
$arm_selection_options .= '<input type="hidden" name="plan_type" id="arm_plan_type_plan" value="0">';
}
return $arm_selection_options;
}
function arm_payment_gateway_plans_selection_options_func($arm_plans_selection_options){
global $wpdb, $ARMember, $arm_slugs, $arm_global_settings, $arm_members_class, $arm_manage_coupons, $arm_payment_gateways, $arm_subscription_plans,$arm_pay_per_post_feature, $arm_gift_version, $arm_manage_gift;
if($arm_pay_per_post_feature->isPayPerPostFeature) {
$arm_plans_selection_options = '<tr class="form-field arm_auto_paid_post_field arm_transaction_paid_post_plan_wrapper hidden_section">
<th>
<label for="arm_paid_post_plan_auto_selection">'. esc_html__('Select Paid Post Plan','ARMember').'</label>
</th>
<td>
<input id="arm_paid_post_plan_auto_selection" type="text" name="arm_paid_post_plan_ids" value="" placeholder="'. esc_html__('Search by paid post plan...', 'ARMember').'" data-msg-required="'. esc_html__('Please select paid post plan.', 'ARMember').'">
<div class="arm_paid_post_plan_items arm_required_wrapper" id="arm_paid_post_plan_items" style="display: none;"></div>
</td>
</tr>';
}
if($arm_gift_version) {
$all_gifts = $arm_manage_gift->arm_get_all_subscription_gift_plans('arm_subscription_plan_id, arm_subscription_plan_name, arm_subscription_plan_status, arm_subscription_plan_type');
$arm_plans_selection_options .= '<tr class="form-field form-required arm_transaction_membership_gift_wrapper hidden_section">
<th>
<label for="arm_gift_id">'. esc_html__('Select Gift','ARMember').'</label>
</th>
<td>
<input type="hidden" id="arm_gift_id" name="manual_payment[gift_id]" value="" data-msg-required="'. esc_html__('Please select at least one membership', 'ARMember').'"/>
<dl class="arm_selectbox column_level_dd">
<dt><span></span><input type="text" style="display:none;" value="" class="arm_autocomplete"/><i class="armfa armfa-caret-down armfa-lg"></i></dt>
<dd>
<ul data-id="arm_gift_id">
<li data-label="'. esc_html__('Select Gift', 'ARMember').'" data-value="">'. esc_html__('Select Gift', 'ARMember').'</li>';
if (!empty($all_gifts)) {
foreach ($all_gifts as $p) {
$p_id = $p['arm_subscription_plan_id'];
if ($p['arm_subscription_plan_status'] == '1' && $p['arm_subscription_plan_type'] != 'free') {
$arm_plans_selection_options .= '<li data-label="'. stripslashes( esc_attr($p['arm_subscription_plan_name'])).'" data-value="'. esc_attr($p_id) .'">'. stripslashes( esc_html($p['arm_subscription_plan_name'])).'</li>';
}
}
}
$arm_plans_selection_options .= '</ul>
</dd>
</dl>
</td>
</tr>';
}
return $arm_plans_selection_options;
}
function arm_load_init_data()
{
if( !empty($_REQUEST) )
{
global $ARMember;
$posted_data = array_map( array( $ARMember, 'arm_recursive_sanitize_data'), $_REQUEST ); //phpcs:ignore
if(!empty($posted_data['log_id']) && !empty($posted_data['log_type']) && !empty($posted_data['is_display_invoice']) && $posted_data['is_display_invoice'])
{
require_once( MEMBERSHIP_VIEWS_DIR.'/arm_invoice_template.php');
exit();
}
else if(!empty($posted_data['is_display_card_data']) && $posted_data['is_display_card_data'] && !empty($posted_data['arm_mcard_id']) && !empty($posted_data['plan_id']) && !empty($posted_data['iframe_id']))
{
require_once( MEMBERSHIP_VIEWS_DIR . '/arm_membership_card_template.php');
exit();
}
}
}
function arm_transaction_hide_show_columns()
{
global $ARMember, $arm_capabilities_global;
$ARMember->arm_check_user_cap($arm_capabilities_global['arm_manage_transactions'], '1',1); //phpcs:ignore --Reason:Verifying nonce
$posted_data = array_map( array( $ARMember, 'arm_recursive_sanitize_data'), $_POST ); //phpcs:ignore
$column_list = isset($posted_data['column_list']) ? $posted_data['column_list'] : '';
if ($column_list != "")
{
$user_id = get_current_user_id();
$column_list = explode(',', $column_list);
$transaction_columns = maybe_serialize($column_list);
$transaction_history_type = isset($posted_data['transaction_history_type']) ? $posted_data['transaction_history_type'] : '';
if($transaction_history_type=='paid_post')
{
update_user_meta($user_id, 'arm_transaction_paid_post_hide_show_columns', $transaction_columns);
}
else if($transaction_history_type=='plan'){
update_user_meta($user_id, 'arm_transaction_hide_show_columns', $transaction_columns);
}
else {
do_action('arm_transaction_hide_show_column_action', $user_id, $transaction_history_type, $transaction_columns, $posted_data);
}
}
die();
}
function arm_get_transaction($field = '', $value = '', $output_type = ARRAY_A)
{
global $wp, $wpdb, $ARMember, $arm_slugs, $arm_members_class, $arm_global_settings, $arm_subscription_plans;
$log_data = array();
if (!empty($field) && !empty($value) && $value != 0)
{
$log_data = $wpdb->get_results( $wpdb->prepare("SELECT * FROM `" . $ARMember->tbl_arm_payment_log . "` WHERE `" . $field . "`=%s",$value), $output_type); //phpcs:ignore --Reason $ARMember->tbl_arm_payment_log is a table name
}
return $log_data;
}
function arm_get_single_transaction($log_id = 0, $output_type = ARRAY_A)
{
global $wp, $wpdb, $ARMember, $arm_slugs, $arm_members_class, $arm_global_settings, $arm_subscription_plans;
$log_data = array();
if (!empty($log_id) && $log_id != 0) {
$log_data = $wpdb->get_row( $wpdb->prepare("SELECT * FROM `" . $ARMember->tbl_arm_payment_log . "` WHERE `arm_log_id`=%d",$log_id), $output_type); //phpcs:ignore --Reason $ARMember->tbl_arm_payment_log is a table name
}
return $log_data;
}
function arm_invoice_detail()
{
global $wp, $wpdb, $current_user, $arm_errors, $ARMember, $arm_global_settings, $arm_subscription_plans, $arm_payment_gateways, $global_currency_sym,$arm_ajax_pattern_start,$arm_ajax_pattern_end;
do_action('arm_before_preview_invoice_detail');
$log_id = intval($_POST['log_id']);//phpcs:ignore
$is_admin_page = !empty($_POST['is_admin']) ? $_POST['is_admin'] : 0;//phpcs:ignore
$log_type = sanitize_text_field($_POST['log_type']);//phpcs:ignore
/* Get Edit Rule Form HTML */
if (!empty($log_id) && $log_id != 0) {
echo $arm_ajax_pattern_start;
?>
<script type="text/javascript">
jQuery('#arm_invoice_iframe').on('load', function() {
var iframeDoc = document.getElementById('arm_invoice_iframe');
});
function arm_print_invoice() {
var iframeDoc = document.getElementById('arm_invoice_iframe');
iframeDoc.contentWindow.arm_print_invoice_content();
}
</script>
<?php if(empty( $is_admin_page ))
{?>
<div class="arm_invoice_detail_popup popup_wrapper arm_invoice_detail_popup_wrapper">
<div class="popup_wrapper_inner" style="overflow: hidden;">
<div class="popup_header arm_text_align_center" >
<span class="popup_close_btn arm_popup_close_btn arm_invoice_detail_close_btn"></span>
<span class="add_rule_content"><?php esc_html_e('Invoice Detail','ARMember' );?></span>
</div>
<div class="popup_content_text arm_invoice_detail_popup_text arm_padding_0" id="arm_invoice_detail_popup_text" >
<?php }?>
<?php
$invoice_view_url = ARM_HOME_URL;
$invoice_view_url = add_query_arg( 'log_id', esc_attr($log_id), $invoice_view_url );
$invoice_view_url = add_query_arg( 'log_type', esc_attr($log_type), $invoice_view_url );
$invoice_view_url = add_query_arg( 'is_display_invoice','1', $invoice_view_url );
?>
<iframe src="<?php echo $invoice_view_url; ?>" id="arm_invoice_iframe" class="arm_width_100_pct" style="height:665px;"></iframe>
</div>
<div class="popup_footer arm_text_align_center" style=" padding: 0 0 35px;">
<button type="button" name="print" onclick="arm_print_invoice();" value="Print" class="armemailaddbtn"><?php esc_html_e('Print', 'ARMember'); ?></button>
<?php
$invoice_pdf_icon_html='';
$invoice_pdf_icon_html=apply_filters('arm_membership_invoice_details_outside',$invoice_pdf_icon_html,$log_id);
echo $invoice_pdf_icon_html; //phpcs:ignore
?>
<?php if(empty( $is_admin_page ))
{?>
</div>
</div>
</div>
<?php
}
echo $arm_ajax_pattern_end;
}
exit;
}
function arm_preview_log_detail()
{
global $wp, $wpdb, $current_user, $arm_errors, $ARMember, $arm_global_settings, $arm_subscription_plans, $arm_payment_gateways, $arm_capabilities_global,$arm_ajax_pattern_start,$arm_ajax_pattern_end;
$ARMember->arm_check_user_cap($arm_capabilities_global['arm_manage_transactions'], '1',1); //phpcs:ignore --Reason:Verifying nonce
$gateways = $arm_payment_gateways->arm_get_all_payment_gateways();
$bank_transfer_gateways_opts = $gateways['bank_transfer'];
$log_id = intval($_POST['log_id']); //phpcs:ignore
$log_type = sanitize_text_field($_POST['log_type']); //phpcs:ignore
$trxn_status = sanitize_text_field($_POST['trxn_status']); //phpcs:ignore
$date_time_format = $arm_global_settings->arm_get_wp_date_time_format();
$general_settings = isset($arm_global_settings->global_settings) ? $arm_global_settings->global_settings : array();
$arm_currency_decimal = isset($general_settings['arm_currency_decimal_digit']) ? $general_settings['arm_currency_decimal_digit'] : 2;
/* Get Edit Rule Form HTML */
if (!empty($log_id) && $log_id != 0)
{
if($log_type == 'bt_log' && $trxn_status!='failed')
{
$log_data = $wpdb->get_row( $wpdb->prepare("SELECT * FROM `" . $ARMember->tbl_arm_payment_log . "` WHERE `arm_log_id`=%d",$log_id)); //phpcs:ignore --Reason $ARMember->tbl_arm_payment_log is a table name
if(empty($log_data))
{
$log_detail = $this->arm_get_single_transaction($log_id);
}
if(!empty($log_data))
{
$lStatus = 'pending';
if ($log_data->arm_transaction_status == '1')
{
$lStatus = 'success';
}
if ($log_data->arm_transaction_status == '2')
{
$lStatus = 'canceled';
}
$arm_coupon_on_each_subscriptions = isset($log_data->arm_coupon_on_each_subscriptions) ? $log_data->arm_coupon_on_each_subscriptions : '0';
$plan_id = $log_data->arm_plan_id;
//$userPlanData = get_user_meta($log_data->arm_user_id, 'arm_user_plan_'.$plan_id, true);
$defaultPlanData = $arm_subscription_plans->arm_default_plan_array();
$userPlanDatameta = get_user_meta($log_data->arm_user_id, 'arm_user_plan_' . $plan_id, true);
$userPlanDatameta = !empty($userPlanDatameta) ? $userPlanDatameta : array();
$planData = shortcode_atts($defaultPlanData, $userPlanDatameta);
$planDetail = $planData['arm_current_plan_detail'];
if (!empty($planDetail)) {
$arm_user_plan_details = new ARM_Plan(0);
$arm_user_plan_details->init((object) $planDetail);
} else {
$arm_user_plan_details = new ARM_Plan($plan_id);
}
$payment_type = !empty($arm_user_plan_details->options['payment_type']) ? $arm_user_plan_details->options['payment_type'] : '';
$log_detail = array (
'arm_log_id' => $log_data->arm_log_id,
'arm_invoice_id' => $log_data->arm_invoice_id,
'arm_user_id' => $log_data->arm_user_id,
'arm_plan_id' => $plan_id,
'arm_payment_gateway' => 'bank_transfer',
'arm_payment_type' => $payment_type,
'arm_token' => '',
'arm_payer_email' => $log_data->arm_payer_email,
'arm_receiver_email' => '',
'arm_transaction_id' => $log_data->arm_transaction_id,
'arm_transaction_payment_type' => '-',
'arm_transaction_status' => $lStatus,
'arm_payment_date' => $log_data->arm_created_date,
'arm_amount' => $log_data->arm_amount,
'arm_currency' => $log_data->arm_currency,
'arm_extra_vars' => $log_data->arm_extra_vars,
'arm_coupon_code' => $log_data->arm_coupon_code,
'arm_coupon_discount' => $log_data->arm_coupon_discount,
'arm_coupon_discount_type' => $log_data->arm_coupon_discount_type,
'arm_created_date' => $log_data->arm_created_date,
'arm_coupon_on_each_subscriptions' => $arm_coupon_on_each_subscriptions,
'arm_bank_name' => $log_data->arm_bank_name,
'arm_account_name' => $log_data->arm_account_name,
'arm_additional_info' => $log_data->arm_additional_info,
'arm_payment_transfer_mode' => $log_data->arm_payment_transfer_mode,
);
if(!empty($arm_user_plan_details->isGiftPlan)) {
$log_detail['arm_is_gift_payment'] = 1;
}
}
}
else
{
$log_detail = $this->arm_get_single_transaction($log_id);
}
if(!empty($log_detail))
{
echo $arm_ajax_pattern_start;
$extra_vars = (isset($log_detail['arm_extra_vars'])) ? maybe_unserialize($log_detail['arm_extra_vars']) : array();
$arm_is_post_payment = (!empty($log_detail['arm_is_post_payment'])) ? maybe_unserialize($log_detail['arm_is_post_payment']) : 0;
$arm_is_gift_payment = (!empty($log_detail['arm_is_gift_payment'])) ? maybe_unserialize($log_detail['arm_is_gift_payment']) : 0;
$log_detail = apply_filters('arm_filter_preview_log_details', $log_detail, $log_id, $_POST);//phpcs:ignore
$transaction_id = (!empty($log_detail['arm_transaction_id'])) ? $log_detail['arm_transaction_id'] : esc_html__('Manual', 'ARMember');
$plan_id = (!empty($log_detail['arm_plan_id'])) ? $arm_subscription_plans->arm_get_plan_name_by_id($log_detail['arm_plan_id']): '--';
$arm_token = (!empty($log_detail['arm_token'])) ? $log_detail['arm_token'] : '--';
$payment_gateway = (!empty($log_detail['arm_payment_gateway'])) ? $arm_payment_gateways->arm_gateway_name_by_key($log_detail['arm_payment_gateway']) : '--';
$transaction_status = ucfirst($log_detail['arm_transaction_status']);
$payment_amount = $arm_payment_gateways->arm_amount_set_separator($log_detail['arm_currency'], $log_detail['arm_amount']) . ' ' . strtoupper($log_detail['arm_currency']);
$trial_amount = !empty($extra_vars['trial']['amount']) ? number_format((float) $extra_vars['trial']['amount'], $arm_currency_decimal).' '.strtoupper($log_detail['arm_currency']) : '-';
?>
<table width="100%" cellspacing="0">
<tr>
<th><?php esc_html_e('User','ARMember' );?></th>
<td><?php
if(!empty($log_detail['arm_user_id']))
{
$data = get_userdata($log_detail['arm_user_id']);
echo (!empty($data->user_login)) ? esc_html($data->user_login) : '--';
}
else {
echo '--';
}
?></td>
</tr>
<tr>
<th>
<?php
if(!empty($arm_is_post_payment))
{
esc_html_e('Post','ARMember' );
}
else if(!empty($arm_is_gift_payment))
{
esc_html_e('Gift','ARMember' );
}
else
{
esc_html_e('Plan','ARMember' );
}
?>
</th>
<td><?php echo esc_html($plan_id);?></td>
</tr>
<tr>
<?php
if ($log_detail['arm_payment_gateway'] == "bank_transfer")
{
$transaction_id_field_label = !empty($bank_transfer_gateways_opts['transaction_id_label']) ? stripslashes($bank_transfer_gateways_opts['transaction_id_label']) : esc_html__('Transaction ID', 'ARMember');
?>
<th><?php echo esc_html($transaction_id_field_label); ?></th>
<?php
}
else
{
?>
<th><?php esc_html_e('Transaction ID','ARMember' );?></th>
<?php } ?>
<td><?php echo esc_html(stripslashes($transaction_id)); ?></td>
</tr>
<?php if(!empty($log_detail['arm_token'])):?>
<tr>
<th><?php
if($log_detail['arm_payment_type'] == 'subscription')
{
esc_html_e('Subscription ID','ARMember' );
}
else {
esc_html_e('Token','ARMember' );
}
?></th>
<td><?php echo esc_html($arm_token);?></td>
</tr>
<?php endif;?>
<tr>
<th><?php esc_html_e('Payment Gateway','ARMember' );?></th>
<td><?php echo esc_html($payment_gateway);?></td>
</tr>
<tr>
<th><?php esc_html_e('Payment Type','ARMember' );?></th>
<td><?php ($log_detail['arm_payment_type'] == 'subscription') ? esc_html_e('Subscription', 'ARMember') : esc_html_e('One Time', 'ARMember');?></td>
</tr>
<tr>
<th><?php esc_html_e('Payer Email','ARMember' );?></th>
<td><?php echo esc_html($log_detail['arm_payer_email']);?></td>
</tr>
<?php if(!empty($log_detail['arm_receiver_email'])): ?>
<tr>
<th><?php esc_html_e('Receiver Email','ARMember' );?></th>
<td><?php echo esc_html($log_detail['arm_receiver_email']);?></td>
</tr>
<?php endif;?>
<tr>
<th><?php esc_html_e('Transaction Status','ARMember' );?></th>
<td><?php echo esc_html($transaction_status);?></td>
</tr>
<tr>
<th><?php esc_html_e('Payment Amount','ARMember' );?></th>
<td><?php echo esc_html($payment_amount)?></td>
</tr>
<tr>
<th><?php esc_html_e('Credit Card Number','ARMember' );?></th>
<td><?php
$cc_num = (isset($extra_vars['card_number']) && !empty($extra_vars['card_number'])) ? $extra_vars['card_number'] : '-';
echo $cc_num; //phpcs:ignore
?></td>
</tr>
<?php if(isset($extra_vars['trial']) && !empty($extra_vars['trial'])): ?>
<tr>
<th><?php esc_html_e('Trial Amount','ARMember' );?></th>
<td><?php echo esc_html($trial_amount)?></td>
</tr>
<tr>
<th><?php esc_html_e('Trial Period','ARMember' );?></th>
<td><?php
$trialInterval = $extra_vars['trial']['interval'];
$trialData = $trialInterval.' ';
if ($extra_vars['trial']['period'] == 'Y')
{
$trialData .= ($trialInterval > 1) ? esc_html__('Years', 'ARMember') : esc_html__('Year', 'ARMember');
}
elseif ($extra_vars['trial']['period'] == 'M')
{
$trialData .= ($trialInterval > 1) ? esc_html__('Months', 'ARMember') : esc_html__('Month', 'ARMember');
}
elseif ($extra_vars['trial']['period'] == 'W')
{
$trialData .= ($trialInterval > 1) ? esc_html__('Weeks', 'ARMember') : esc_html__('Week', 'ARMember');
}
else
{
$trialData .= ($trialInterval > 1) ? esc_html__('Days', 'ARMember') : esc_html__('Day', 'ARMember');
}
echo esc_html($trialData);
?></td>
</tr>
<?php endif;?>
<?php if(!empty($log_detail['arm_coupon_code'])): ?>
<tr>
<th><?php esc_html_e('Used Coupon Code','ARMember' );?></th>
<td><?php echo esc_html($log_detail['arm_coupon_code']);?></td>
</tr>
<tr>
<th><?php esc_html_e('Used Coupon Discount','ARMember' );?></th>
<td><?php
if(!empty($log_detail['arm_coupon_discount']) && $log_detail['arm_coupon_discount'] > 0)
{
$discount_type = ($log_detail['arm_coupon_discount_type'] != 'percentage') ? " " .$log_detail['arm_coupon_discount_type'] : "%";
$discount_decimal = number_format((float) $log_detail['arm_coupon_discount'], $arm_currency_decimal);
echo esc_html($discount_decimal);
echo esc_html($discount_type);
}
else
{
echo 0;
}
?></td>
</tr>
<?php endif;?>
<?php if ($log_detail['arm_payment_gateway'] == "bank_transfer"):
$bank_name_field_label = !empty($bank_transfer_gateways_opts['bank_name_label']) ? stripslashes($bank_transfer_gateways_opts['bank_name_label']) : esc_html__('Bank Name', 'ARMember');
$account_name_field_label = !empty($bank_transfer_gateways_opts['account_name_label']) ? stripslashes($bank_transfer_gateways_opts['account_name_label']) : esc_html__('Account Holder Name', 'ARMember');
$additional_info_field_label = !empty($bank_transfer_gateways_opts['additional_info_label']) ? stripslashes($bank_transfer_gateways_opts['additional_info_label']) : esc_html__('Additional Note', 'ARMember');
$transfer_mode_field_label = !empty($bank_transfer_gateways_opts['transfer_mode_label']) ? stripslashes($bank_transfer_gateways_opts['transfer_mode_label']) : esc_html__('Payment Mode', 'ARMember');
?>
<?php if (isset($log_detail['arm_bank_name']) && !empty($log_detail['arm_bank_name'])): ?>
<tr>
<th><?php echo esc_html($bank_name_field_label);?></th>
<td><?php echo esc_html(stripslashes($log_detail['arm_bank_name']));?></td>
</tr>
<?php endif;?>
<?php if (isset($log_detail['arm_account_name']) && !empty($log_detail['arm_account_name'])): ?>
<tr>
<th><?php echo esc_html($account_name_field_label);?></th>
<td><?php echo esc_html(stripslashes($log_detail['arm_account_name']));?></td>
</tr>
<?php endif;?>
<?php if (isset($log_detail['arm_additional_info']) && !empty($log_detail['arm_additional_info'])): ?>
<tr>
<th><?php echo esc_html($additional_info_field_label);?></th>
<td><?php $additional_info = nl2br(stripslashes($log_detail['arm_additional_info'])); echo esc_html($additional_info);?></td>
</tr>
<?php endif;?>
<?php if (isset($log_detail['arm_payment_transfer_mode']) && !empty($log_detail['arm_payment_transfer_mode'])): ?>
<tr>
<th><?php echo esc_html($transfer_mode_field_label);?></th>
<td><?php $transfer_mode = nl2br($log_detail['arm_payment_transfer_mode']); echo esc_html($transfer_mode);?></td>
</tr>
<?php endif;?>
<?php endif;?>
<?php if ($log_detail['arm_payment_gateway'] == "manual" && !empty($extra_vars['note'])): ?>
<tr>
<th><?php esc_html_e('Note','ARMember' );?></th>
<td><?php $transaction_note= nl2br(stripslashes($extra_vars['note'])); echo esc_html($transaction_note);?></td>
</tr>
<?php endif;
$all_global_settings = $arm_global_settings->arm_get_all_global_settings();
$general_settings = $all_global_settings['general_settings'];
$enable_tax= isset($general_settings['enable_tax']) ? $general_settings['enable_tax'] : 0;
if($enable_tax)
{
?>
<tr>
<th><?php esc_html_e('Tax Percentage','ARMember' );?></th>
<td><?php
$tax_percentage = '-';
if(isset($extra_vars['tax_percentage']))
{
$tax_percentage = ($extra_vars['tax_percentage']!='') ? number_format((float)$extra_vars['tax_percentage'],$arm_currency_decimal).'%' : '-';
}
echo esc_html($tax_percentage);
?></td>
</tr>
<tr>
<th><?php esc_html_e('Tax Amount','ARMember' );?></th>
<td><?php
$tax_amount = '-';
if(isset($extra_vars['tax_amount']))
{
$tax_amount = ($extra_vars['tax_amount']!='') ? $extra_vars['tax_amount'].' '.strtoupper($log_detail['arm_currency']): '-';
}
echo esc_html($tax_amount);
?></td>
</tr>
<?php
}
?>
<tr>
<th><?php esc_html_e('Payment Date','ARMember' );?></th>
<td><?php $payment_date = date_i18n($date_time_format, strtotime($log_detail['arm_created_date'])); echo esc_html($payment_date);?></td>
</tr>
<tr>
<th><?php esc_html_e('Refund Amount','ARMember' );?></th>
<td><?php $refund_amount = !empty($extra_vars['refund_amount']) ?$arm_payment_gateways->arm_amount_set_separator($log_detail['arm_currency'], $extra_vars['refund_amount']) . ' ' . strtoupper($log_detail['arm_currency']) :'-'; echo esc_html($refund_amount);?></td>
</tr>
<tr>
<th><?php esc_html_e('Refund Reason','ARMember' );?></th>
<td><?php $refund_reason = !empty($extra_vars['refund_reason']) ? $extra_vars['refund_reason'] : '-'; echo esc_html($refund_reason);?></td>
</tr>
</table>
<?php
echo $arm_ajax_pattern_end;
}
}
exit;
}
function arm_transaction_ajax_action()
{
global $wpdb, $ARMember, $arm_members_class, $arm_global_settings, $arm_capabilities_global;
$ARMember->arm_check_user_cap($arm_capabilities_global['arm_manage_transactions'], '1',1); //phpcs:ignore --Reason:Verifying nonce
$posted_data = array_map( array( $ARMember, 'arm_recursive_sanitize_data'), $_POST );//phpcs:ignore
if(!isset($posted_data))
{
return;
}
$action = sanitize_text_field($posted_data['act']);
$id = intval($posted_data['id']);
$type = sanitize_text_field($posted_data['type']);
$trxn_status = sanitize_text_field($posted_data['trxn_status']);
if ($action == 'delete')
{
if (empty($id))
{
$errors[] = esc_html__('Invalid action.', 'ARMember');
}
else
{
if (!current_user_can('arm_manage_transactions'))
{
$errors[] = esc_html__('Sorry, You do not have permission to perform this action.', 'ARMember');
}
else {
if ($type == 'bt_log' && $trxn_status!='failed')
{
$res_var = $wpdb->delete($ARMember->tbl_arm_payment_log, array('arm_log_id' => $id));
}
else
{
$res_var = $wpdb->delete($ARMember->tbl_arm_payment_log, array('arm_log_id' => $id));
}
if ($res_var)
{
$message = esc_html__('Record is deleted successfully.', 'ARMember');
}
else
{
$errors[] = esc_html__('Sorry, Something went wrong. Please try again.', 'ARMember');
}
}
}
}
$return_array = $arm_global_settings->handle_return_messages(@$errors, @$message);
echo arm_pattern_json_encode($return_array);
exit;
}
function arm_bulk_delete_transactions()
{
global $wpdb, $ARMember, $arm_members_class, $arm_global_settings, $arm_capabilities_global;
$ARMember->arm_check_user_cap($arm_capabilities_global['arm_manage_transactions'], '1',1); //phpcs:ignore --Reason:Verifying nonce
$posted_data = array_map( array( $ARMember, 'arm_recursive_sanitize_data' ), $_POST ); //phpcs:ignore
if(!isset($posted_data))
{
return;
}
$bulkaction = $arm_global_settings->get_param('action1');
if ($bulkaction == -1)
{
$bulkaction = $arm_global_settings->get_param('action2');
}
$btids = $arm_global_settings->get_param('bt-item-action', '');
$ids = $arm_global_settings->get_param('item-action', '');
$ppids = $arm_global_settings->get_param('pp-item-action', '');
$gpids = $arm_global_settings->get_param('gp-item-action', '');
if(empty($ids) && empty($btids) && empty($ppids) && empty($gpids))
{
$errors[] = esc_html__('Please select one or more records.', 'ARMember');
}
else
{
if(!current_user_can('arm_manage_transactions'))
{
$errors[] = esc_html__('Sorry, You do not have permission to perform this action.', 'ARMember');
}
else
{
if($bulkaction == 'delete_transaction')
{
$btids = (!is_array($btids)) ? explode(',', $btids) : $btids;
$ids = (!is_array($ids)) ? explode(',', $ids) : $ids;
$ppids = (!is_array($ids)) ? explode(',', $ppids) : $ppids;
$gpids = (!is_array($ids)) ? explode(',', $gpids) : $gpids;
if (is_array($btids))
{
foreach ($btids as $id)
{
$res_var = $wpdb->delete($ARMember->tbl_arm_payment_log, array('arm_log_id' => $id));
}
}
if (is_array($ids))
{
foreach ($ids as $id)
{
$res_var = $wpdb->delete($ARMember->tbl_arm_payment_log, array('arm_log_id' => $id));
}
}
if (is_array($ppids))
{
foreach ($ppids as $id)
{
$res_var = $wpdb->delete($ARMember->tbl_arm_payment_log, array('arm_log_id' => $id));
}
}
if (is_array($gpids))
{
foreach ($gpids as $id)
{
$res_var = $wpdb->delete($ARMember->tbl_arm_payment_log, array('arm_log_id' => $id));
}
}
$message = esc_html__('Transaction(s) has been deleted successfully.', 'ARMember');
}
else
{
$errors[] = esc_html__('Please select valid action.', 'ARMember');
}
}
}
$return_array = $arm_global_settings->handle_return_messages(@$errors, @$message);
echo arm_pattern_json_encode($return_array);
exit;
}
function arm_filter_transactions_list()
{
global $ARMember, $arm_capabilities_global,$arm_ajax_pattern_start,$arm_ajax_pattern_end;
$ARMember->arm_check_user_cap($arm_capabilities_global['arm_manage_transactions'], '1',1); //phpcs:ignore --Reason:Verifying nonce
echo $arm_ajax_pattern_start;
if(defined('MEMBERSHIPLITE_VIEWS_DIR') && file_exists(MEMBERSHIPLITE_VIEWS_DIR.'/arm_transactions_list_records.php'))
{
include(MEMBERSHIPLITE_VIEWS_DIR.'/arm_transactions_list_records.php');
}
echo $arm_ajax_pattern_end;
die();
}
function arm_filter_pp_transactions_list(){
global $ARMember, $arm_capabilities_global;
$ARMember->arm_check_user_cap($arm_capabilities_global['arm_manage_transactions'], '1',1);
if( file_exists( MEMBERSHIP_VIEWS_DIR . '/arm_paid_post_transaction_list_records.php' ) ){
include( MEMBERSHIP_VIEWS_DIR . '/arm_paid_post_transaction_list_records.php' );
}
die;
}
function arm_add_manual_payment()
{
global $wp, $wpdb, $ARMember, $arm_slugs, $arm_global_settings, $arm_subscription_plans,$arm_pay_per_post_feature, $arm_capabilities_global,$arm_ajax_pattern_start,$arm_ajax_pattern_end;
$ARMember->arm_check_user_cap($arm_capabilities_global['arm_manage_transactions'], '1',1);
$data = array_map( array( $ARMember, 'arm_recursive_sanitize_data'), $_REQUEST ); //phpcs:ignore
// $redirect_to = admin_url('admin.php?page=' . $arm_slugs->transactions);
$response = array("type"=>"error","msg" => esc_html__('Something Went Wrong! Please contact to site administrator','ARMember'));
if (!empty($data))
{
$manual_data = $data['manual_payment'];
$user_id = intval($data['arm_user_id_hidden']);
$is_post_payment = ($data['plan_type']==1) ? 1 : 0;
$is_gift_payment = ($data['plan_type']==2) ? 1 : 0;
$arm_paid_post_id = !empty($data['arm_paid_post_id'])?$data['arm_paid_post_id']:0;
if(empty($user_id)){
$message = esc_html__('Sorry, User not found.', 'ARMember');
$response = array("type"=>"error","msg" => $message);
echo arm_pattern_json_encode($response);
die();
}
$plan_id = intval($manual_data['plan_id']);
if(!empty($is_gift_payment))
{
$plan_id = intval($manual_data['gift_id']);
}
$user_info = get_user_by('id', $user_id);
$plan = new ARM_Plan($plan_id);
/* Add transaction payment log */
$manual_log = array (
'arm_user_id' => $user_id,
'arm_first_name'=>$user_info->first_name,
'arm_last_name'=>$user_info->last_name,
'arm_plan_id' => $plan_id,
'arm_payment_gateway' => 'manual',
'arm_payer_email' => $user_info->user_email,
'arm_payment_type' => $plan->payment_type,
'arm_transaction_payment_type' => 'manual',
'arm_transaction_status' => sanitize_text_field($manual_data['transaction_status']),
'arm_amount' => $manual_data['amount'],
'arm_currency' => sanitize_text_field($manual_data['currency']),
'arm_is_post_payment' => $is_post_payment,
'arm_is_gift_payment' => $is_gift_payment,
'arm_paid_post_id' => $arm_paid_post_id,
'arm_extra_vars' => maybe_serialize(array('note' => $manual_data['note'])),
);
$manual_log = apply_filters('arm_modify_payment_data_before_add_manual_payment', $manual_log, $data);
$log_id = $this->arm_add_transaction($manual_log);
if($log_id)
{
/* Action After Adding Plan */
do_action('arm_saved_manual_payment', $data);
$message = esc_html__('Manual payment has been added successfully.', 'ARMember');
$response = array("type"=>"success","msg" => $message);
echo arm_pattern_json_encode($response);
die();
} else {
$message = esc_html__('Sorry, Something went wrong. please try again.', 'ARMember');
$response = array("type"=>"success","msg" => $message);
echo arm_pattern_json_encode($response);
die();
}
}
return;
}
function arm_add_transaction($log_data = array())
{
global $wp, $wpdb, $ARMember, $arm_subscription_plans, $arm_manage_coupons, $arm_payment_gateways;
$currency = $arm_payment_gateways->arm_get_global_currency();
$default_log_data = array (
'arm_invoice_id' => 0,
'arm_user_id' => 0,
'arm_first_name' => '',
'arm_last_name' => '',
'arm_plan_id' => 0,
'arm_payment_gateway' => '',
'arm_payment_type' => '',
'arm_token' => '',
'arm_payer_email' => '',
'arm_receiver_email' => '',
'arm_transaction_id' => '',
'arm_transaction_payment_type' => '',
'arm_transaction_status' => '',
'arm_payment_mode' => '',
'arm_payment_date' => current_time('mysql'),
'arm_amount' => 0,
'arm_currency' => $currency,
'arm_extra_vars' => '',
'arm_coupon_code' => '',
'arm_coupon_discount' => 0,
'arm_coupon_discount_type' => '',
'arm_is_trial' => '0',
'arm_created_date' => current_time('mysql'),
'arm_display_log' => '1',
'arm_coupon_on_each_subscriptions' => '0',
'arm_is_post_payment' => '0',
'arm_is_gift_payment' => '0',
'arm_paid_post_id' => '0',
);
$default_log_data = apply_filters('arm_add_default_log_data_value', $default_log_data);
$log_data = shortcode_atts($default_log_data, $log_data); /* Merge Default Values */
switch (strtolower($log_data['arm_transaction_status'])) {
case 'completed':
case 'paid':
case 'active':
case 'trialing':
case 'succeeded':
case 'success':
$log_data['arm_transaction_status'] = 'success';
break;
case 'pending':
case 'past_due':
$log_data['arm_transaction_status'] = 'pending';
break;
case 'canceled':
case 'unpaid':
$log_data['arm_transaction_status'] = 'canceled';
$log_data['arm_coupon_code'] = $_REQUEST['arm_coupon_code'] = '';
break;
case 'failed':
$log_data['arm_transaction_status'] = 'failed';
$log_data['arm_coupon_code'] = $_REQUEST['arm_coupon_code'] = '';
break;
case 'expired':
$log_data['arm_transaction_status'] = 'expired';
$log_data['arm_coupon_code'] = $_REQUEST['arm_coupon_code'] = '';
break;
default:
break;
}
$coupon_code = !empty($log_data['arm_coupon_code']) ? $log_data['arm_coupon_code'] : '';
if (!empty($coupon_code) && $arm_manage_coupons->isCouponFeature)
{
$log_data['arm_coupon_code'] = $coupon_code;
$log_data['arm_coupon_discount'] = !empty($log_data['arm_coupon_discount']) ? $log_data['arm_coupon_discount'] : 0;
$log_data['arm_coupon_discount_type'] = !empty($log_data['arm_coupon_discount_type']) ? $log_data['arm_coupon_discount_type'] : '';
if($coupon_code != '') {
$arm_manage_coupons->arm_update_coupon_used_count($coupon_code);
}
}
else {
$log_data['arm_coupon_code'] = '';
}
if(is_null($log_data['arm_amount']) || (empty($log_data['arm_amount']) && !empty($log_data['arm_is_trial'])))
{
$log_data['arm_amount'] = 0;
}
if(is_null($log_data['arm_is_trial']))
{
$log_data['arm_is_trial'] = 0;
}
/* Insert Payment Log Data. */
$arm_last_invoice_id = get_option('arm_last_invoice_id', 0);
$arm_transaction_status = $log_data['arm_transaction_status'];
$arm_invoice_id_generate_flag = 1; // Flag to check if invoice id is generated.
$arm_invoice_id_generate_flag = apply_filters('arm_is_allowed_generate_invoice_id', $arm_invoice_id_generate_flag, $arm_transaction_status, $log_data); //phpcs:ignore --Reason:Filter to check last invoice id.
if( !empty($arm_invoice_id_generate_flag) )
{
$arm_last_invoice_id++;
$log_data['arm_invoice_id'] = $arm_last_invoice_id;
}
else
{
$log_data['arm_invoice_id'] = 0;
}
do_action('arm_before_add_transaction', $log_data);
$payment_log = $wpdb->insert($ARMember->tbl_arm_payment_log, $log_data);
if(!$payment_log)
{
//try again for make an entry for payment history due to first entry is failed.
$arm_insert_data_keys = "";
$arm_insert_data_values = "";
foreach($log_data as $arm_log_data_key => $arm_log_data_value)
{
$arm_insert_data_keys .= (!empty($arm_insert_data_keys)) ? ",".$arm_log_data_key : $arm_log_data_key;
$arm_insert_data_values .= (!empty($arm_insert_data_values)) ? ",'".$arm_log_data_value."'" : "'".$arm_log_data_value."'";
}
$arm_payment_log = $wpdb->query("INSERT INTO ".$ARMember->tbl_arm_payment_log." (".$arm_insert_data_keys.") VALUES(".$arm_insert_data_values.")"); //phpcs:ignore --Reason $ARMember->tbl_arm_payment_log is a table name
}
$payment_log_id = $wpdb->insert_id;
if (!empty($payment_log_id) && $payment_log_id != 0)
{
$log_data['arm_log_id'] = $payment_log_id;
update_option('arm_last_invoice_id', $arm_last_invoice_id);
do_action('arm_after_add_transaction', $log_data);
return $payment_log_id;
}
else
{
return false;
}
}
function arm_mask_credit_card_number($cc_number = '')
{
$masked = 'xxxx-xxxx-xxxx-' . substr($cc_number, -4);
return $masked;
}
function arm_get_total_transaction($user_id = 0,$is_paid_post = 0) {
global $ARMember, $wp, $wpdb;
$where_plog = $wpdb->prepare(" WHERE arm_display_log = %d ",1);
if(isset($user_id) && $user_id != '' && $user_id != 0)
{
$where_plog.= $wpdb->prepare(" AND `arm_user_id`=%d ",$user_id);
}
if(!empty($is_paid_post) && $is_paid_post==1){
$where_plog.= $wpdb->prepare(" AND `arm_paid_post_id`> %d",0);
$where_plog.= $wpdb->prepare(" AND `arm_is_post_payment`= %d",1);
}
else if(!empty($is_paid_post) && $is_paid_post==2){
$where_plog.= $wpdb->prepare(" AND `arm_is_gift_payment`= %d",1);
}else{
$where_plog.= $wpdb->prepare(" AND `arm_paid_post_id`= %d",0);
$where_plog.= $wpdb->prepare(" AND `arm_is_post_payment`= %d",0);
}
$total_payment_log_rows = "SELECT COUNT(*) as count_plog FROM `".$ARMember->tbl_arm_payment_log."` {$where_plog}";
$count_payment_rows = $wpdb->get_results($total_payment_log_rows); //phpcs:ignore --Reason $total_payment_log_rows is prepared query.
$totalRecord = intval($count_payment_rows[0]->count_plog);
return $totalRecord;
}
function arm_get_all_transaction($user_id = 0, $offset = 0, $perPage = 5,$is_paid_post= 0) {
global $ARMember, $wp, $wpdb;
$ctquery = "SELECT pt.arm_log_id,pt.arm_invoice_id,pt.arm_user_id,pt.arm_first_name,pt.arm_last_name,pt.arm_plan_id,pt.arm_transaction_id,pt.arm_amount,pt.arm_currency,pt.arm_payment_gateway,pt.arm_transaction_status,pt.arm_payment_type,pt.arm_extra_vars,wpu.user_login as arm_user_login,pt.arm_display_log as arm_display_log, pt.arm_payment_date, pt.arm_coupon_code, pt.arm_coupon_discount_type, pt.arm_coupon_discount, pt.arm_created_date,pt.arm_is_post_payment,pt.arm_paid_post_id,pt.arm_is_gift_payment FROM `" . $ARMember->tbl_arm_payment_log . "` pt LEFT JOIN `" . $ARMember->tbl_arm_subscription_plans . "` sp ON pt.arm_plan_id = sp.arm_subscription_plan_id LEFT JOIN `" . $wpdb->users . "` wpu ON pt.arm_user_id = wpu.ID ";
$ptquery = "{$ctquery}";
$where_plog = $wpdb->prepare(" WHERE arm_display_log = %d ",1);
if(isset($user_id) && $user_id != '' && $user_id != 0)
{
$where_plog.= $wpdb->prepare(" AND `arm_user_id`=%d ",$user_id);
}
if(!empty($is_paid_post) && $is_paid_post==1){
$where_plog.= $wpdb->prepare(" AND `arm_paid_post_id`> %d",0);
$where_plog.= $wpdb->prepare(" AND `arm_is_post_payment`= %d",1);
}
else if(!empty($is_paid_post) && $is_paid_post==2)
{
$where_plog.= $wpdb->prepare(" AND `arm_is_gift_payment`= %d",1);
}
else{
$where_plog.= $wpdb->prepare(" AND `arm_paid_post_id`= %d",0);
$where_plog.= $wpdb->prepare(" AND `arm_is_post_payment`= %d",0);
$where_plog.= $wpdb->prepare(" AND `arm_is_gift_payment`= %d",0);
}
$orderby = " order by arm_payment_date desc, arm_invoice_id desc ";
$phlimit = " LIMIT {$offset},{$perPage}";
$payment_grid_query = "SELECT * FROM (" . $ptquery . ") AS arm_payment_history_log {$where_plog} {$orderby} {$phlimit}";
$user_plogs = $wpdb->get_results($payment_grid_query, ARRAY_A); //phpcs:ignore --Reason $payment_grid_query is a table name
return $user_plogs;
}
function arm_get_user_transactions_with_pagging($user_id, $current_page = 1, $perPage = 2, $plan_id_name_array = array(),$is_paid_post=0)
{
global $wp, $wpdb, $ARMember, $arm_slugs, $arm_members_class, $arm_global_settings, $arm_subscription_plans,$arm_payment_gateways, $global_currency_sym;
$log_data = $temp_logs = array();
$date_format = $arm_global_settings->arm_get_wp_date_time_format();
$global_currency = $arm_payment_gateways->arm_get_global_currency();
$general_settings = isset($arm_global_settings->global_settings) ? $arm_global_settings->global_settings : array();
$arm_currency_decimal = isset($general_settings['arm_currency_decimal_digit']) ? $general_settings['arm_currency_decimal_digit'] : 2;
if (!empty($user_id) && $user_id != 0) {
$perPage = (!empty($perPage) && is_numeric($perPage)) ? $perPage : 5;
$offset = 0;
if (!empty($current_page) && $current_page > 1) {
$offset = ($current_page - 1) * $perPage;
}
$totalRecord = $this->arm_get_total_transaction($user_id,$is_paid_post);
$user_logs = $this->arm_get_all_transaction($user_id, $offset, $perPage,$is_paid_post);
$all_global_settings = $arm_global_settings->arm_get_all_global_settings();
$general_settings = $all_global_settings['general_settings'];
$enable_tax= isset($general_settings['enable_tax']) ? $general_settings['enable_tax'] : 0;
$trans_records = '';
$trans_records .= '<div class="arm_user_transaction_wrapper" data-user_id="' . $user_id . '" data-is_paid_post="'.$is_paid_post.'">';
$trans_records .= '<table class="form-table arm_member_last_subscriptions_table" width="100%">';
$trans_records .= '<tr>';
$trans_records .= '<td>#</td>';
$membership_data_label = esc_html__('Membership','ARMember');
$member_payment_type = esc_html__('Payment Type','ARMember');
if($is_paid_post!= 2){
$trans_records .= '<td>'.esc_html__('Membership','ARMember').'</td>';
$trans_records .= '<td>'.esc_html__('Payment Type','ARMember').'</td>';
}
else if($is_paid_post == 2){
$membership_data_label = esc_html__('Gift','ARMember');
$member_payment_type = esc_html__('Gift','ARMember');
$trans_records .= '<td>'.esc_html__('Gift','ARMember').'</td>';
}
$trans_records .= '<td>'.esc_html__('Transaction Status','ARMember').'</td>';
$trans_records .= '<td>'.esc_html__('Gateway','ARMember').'</td>';
$trans_records .= '<td>'.esc_html__('Amount','ARMember').'</td>';
if($enable_tax){
$trans_records .= '<td>'.esc_html__('Tax Percentage','ARMember').'</td>';
$trans_records .= '<td>'.esc_html__('Tax Amount','ARMember').'</td>';
}
if($is_paid_post != 2)
{
$trans_records .= '<td>'.esc_html__('Used Coupon Code','ARMember').'</td>';
$trans_records .= '<td>'.esc_html__('Used Coupon Discount','ARMember').'</td>';
}
$trans_records .= '<td>'.esc_html__('Payment Date','ARMember').'</td>';
$trans_records .= '</tr>';
$i = 1;
$plan_ids_array = array();
$plan_ids_name_array = array();
foreach($user_logs as $user_log)
{
$rc = (object) $user_log;
if(in_array($rc->arm_plan_id, $plan_ids_array)) {
$subs_plan = stripslashes_deep($plan_ids_name_array[$rc->arm_plan_id]);
}
else {
$subs_plan = stripslashes_deep($plan_id_name_array[$rc->arm_plan_id]);
}
$plan_ids_name_array[$rc->arm_plan_id] = $subs_plan;
$plan_ids_array[] = $rc->arm_plan_id;
$membership = (!empty($subs_plan)) ? $subs_plan : '-';
$payment_type = ($rc->arm_payment_type == 'subscription') ? esc_html__('Subscription', 'ARMember') : esc_html__('One Time', 'ARMember');
$extraVars = (!empty($rc->arm_extra_vars)) ? maybe_unserialize($rc->arm_extra_vars) : array();
if(!empty($extraVars))
{
if(isset($extraVars['manual_by']))
{
$payment_type.= '<div class="arm_font_size_12"><em>(' . esc_html($extraVars['manual_by']) . ')</em></div>';
}
}
$arm_transaction_status = $rc->arm_transaction_status;
switch ($arm_transaction_status) {
case '0':
$arm_transaction_status = 'pending';
break;
case '1':
$arm_transaction_status = 'success';
break;
case '2':
$arm_transaction_status = 'canceled';
break;
default:
$arm_transaction_status = $rc->arm_transaction_status;
break;
}
$arm_transaction_status = $this->arm_get_transaction_status_text($arm_transaction_status);
$arm_gateway = ($rc->arm_payment_gateway != '') ? $arm_payment_gateways->arm_gateway_name_by_key($rc->arm_payment_gateway) : esc_html__('Manual', 'ARMember');
$t_currency = (isset($rc->arm_currency) && !empty($rc->arm_currency)) ? strtoupper($rc->arm_currency) : strtoupper($global_currency);
$currency = (isset($all_currencies[$t_currency])) ? $all_currencies[$t_currency] : $global_currency_sym;
$transAmount = '';
if (!empty($extraVars) && !empty($extraVars['plan_amount']) && $extraVars['plan_amount'] != 0 )
{
$arm_plan_amount = $arm_payment_gateways->arm_amount_set_separator($t_currency, $extraVars['plan_amount']);
if($arm_plan_amount != $rc->arm_amount)
{
$transAmount .= '<span class="arm_transaction_list_plan_amount">'.$arm_payment_gateways->arm_prepare_amount($t_currency, $extraVars['plan_amount']).'</span>';
}
}
$transAmount .= '<span class="arm_transaction_list_paid_amount">';
if (!empty($rc->arm_amount) && $rc->arm_amount > 0 ) {
$transAmount .= $arm_payment_gateways->arm_prepare_amount($t_currency, $rc->arm_amount);
if ($global_currency_sym == $currency && strtoupper($global_currency) != $t_currency)
{
$transAmount .= ' ('.$t_currency.')';
}
}
else
{
$transAmount .= $arm_payment_gateways->arm_prepare_amount($t_currency, $rc->arm_amount);
}
$transAmount .= '</span>';
if (!empty($extraVars) && isset($extraVars['trial']))
{
$trialInterval = $extraVars['trial']['interval'];
$transAmount .= '<span class="arm_transaction_list_trial_text">';
$transAmount .= esc_html__('Trial Period', 'ARMember').": {$trialInterval} ";
if ($extraVars['trial']['period'] == 'Y')
{
$transAmount .= ($trialInterval > 1) ? esc_html__('Years', 'ARMember') : esc_html__('Year', 'ARMember');
}
elseif ($extraVars['trial']['period'] == 'M')
{
$transAmount .= ($trialInterval > 1) ? esc_html__('Months', 'ARMember') : esc_html__('Month', 'ARMember');
}
elseif ($extraVars['trial']['period'] == 'W')
{
$transAmount .= ($trialInterval > 1) ? esc_html__('Weeks', 'ARMember') : esc_html__('Week', 'ARMember');
}
elseif ($extraVars['trial']['period'] == 'D')
{
$transAmount .= ($trialInterval > 1) ? esc_html__('Days', 'ARMember') : esc_html__('Day', 'ARMember');
}
$transAmount .= '</span>';
}
$arm_used_coupon_discount = '';
if(!empty($rc->arm_coupon_code))
{
if(!empty($rc->arm_coupon_discount) && $rc->arm_coupon_discount > 0)
{
if($rc->arm_coupon_discount_type == 'percentage' || $rc->arm_coupon_discount_type == '%')
{
$arm_used_coupon_discount = $rc->arm_coupon_discount.'%';
}
else
{
$arm_used_coupon_discount = $arm_payment_gateways->arm_prepare_amount($t_currency, $rc->arm_coupon_discount);
}
}
else
{
$arm_used_coupon_discount = 0;
}
}
else
{
$arm_used_coupon_discount = '-';
};
$arm_used_coupon_code = (!empty($rc->arm_coupon_code)) ? $rc->arm_coupon_code : '-';
$trans_records .= '<tr class="arm_member_last_subscriptions_data">';
$trans_records .= '<td data-label="#">'.$i.'</td>';
$trans_records .= '<td class="rec_center" data-label="'.$membership_data_label.'">'.$membership.'</td>';
if($is_paid_post != 2){
$trans_records .= '<td class="rec_center" data-label="'.$member_payment_type.'">'.$payment_type.'</td>';
}
$trans_records .= '<td data-label="'.esc_html__('Transaction Status','ARMember').'">'.$arm_transaction_status.'</td>';
$trans_records .= '<td data-label="'.esc_html__('Gateway','ARMember').'">'.$arm_gateway.'</td>';
$trans_records .= '<td data-label="'.esc_html__('Amount','ARMember').'">'.$transAmount.'</td>';
if($enable_tax)
{
$trans_records .= '<td data-label="'.esc_html__('Tax Percentage','ARMember').'">';
if (!empty($extraVars) && isset($extraVars['tax_percentage']))
{
$trans_records .= ($extraVars['tax_percentage']!='') ? number_format((float)$extraVars['tax_percentage'],$arm_currency_decimal).'%' : '-';
}
else
{
$trans_records .= '-';
}
$trans_records .= '</td>';
$trans_records .= '<td data-label="'.esc_html__('Tax Amount','ARMember').'">';
if (!empty($extraVars) && isset($extraVars['tax_amount']))
{
$trans_records .= ($extraVars['tax_amount']!='') ? $arm_payment_gateways->arm_prepare_amount($t_currency, $extraVars['tax_amount']) : '-';
}
else
{
$trans_records .= '-';
}
$trans_records .= '</td>';
}
if($is_paid_post != 2){
$trans_records .= '<td data-label="'.esc_html__('Used Coupon Code','ARMember').'">'.$arm_used_coupon_code.'</td>';
$trans_records .= '<td data-label="'.esc_html__('Used Coupon Discount','ARMember').'">'.$arm_used_coupon_discount.'</td>';
}
$trans_records .= '<td data-label="'.esc_html__('Payment Date','ARMember').'">'.date_i18n($date_format, strtotime($rc->arm_created_date)).'</td>';
$trans_records .= '</tr>';
$i++;
}
if($totalRecord <= 0)
{
if($enable_tax)
{
$total_column = 11;
}
else
{
$total_column = 9;
}
$trans_records .= '<tr>';
$trans_records .= '<td colspan="'.esc_attr($total_column).'" class="arm_text_align_center">' . esc_html__('No Payment History Found.', 'ARMember') . '</td>';
$trans_records .= '</tr>';
}
$trans_records .= '</table>';
$trans_records .= '<div class="arm_membership_history_pagination_block">';
$transPaging = $arm_global_settings->arm_get_paging_links($current_page, $totalRecord, $perPage, '');
$trans_records .= '<div class="arm_membership_history_paging_container">' . $transPaging . '</div>';
$trans_records .= '</div>';
$trans_records .= '</div>';
}
return $trans_records;
}
function arm_get_user_transactions_paging_action() {
global $wp, $wpdb, $ARMember, $arm_global_settings, $arm_payment_gateways, $arm_subscription_plans, $arm_capabilities_global;
if (isset($_POST['action']) && $_POST['action'] == 'arm_get_user_transactions_paging_action') {//phpcs:ignore
$user_id = isset($_POST['user_id']) ? intval($_POST['user_id']) : 0; //phpcs:ignore
$current_page = isset($_POST['page']) ? intval($_POST['page']) : 1; //phpcs:ignore
$per_page = isset($_POST['per_page']) ? intval($_POST['per_page']) : 5; //phpcs:ignore
$is_paid_post = isset($_POST['is_paid_post']) ? intval($_POST['is_paid_post']) : 0; //phpcs:ignore
$plan_id_name_array = $arm_subscription_plans->arm_get_plan_name_by_id_from_array();
$ARMember->arm_check_user_cap($arm_capabilities_global['arm_manage_members'], '1',1);
echo $this->arm_get_user_transactions_with_pagging($user_id, $current_page, $per_page, $plan_id_name_array,$is_paid_post); //phpcs:ignore
}
exit;
}
function arm_get_bank_transfer_logs($filter_gateway = 0, $filter_ptype = 0, $filter_pstatus = 0, $limit = 0)
{
global $wp, $wpdb, $current_user, $arm_errors, $ARMember, $arm_global_settings, $arm_subscription_plans;
$bt_logs = array();
if (empty($filter_gateway) || $filter_gateway == 'bank_transfer' || $filter_gateway == '0') {
if (empty($filter_ptype) || $filter_ptype == 'one_time' || $filter_ptype == '0') {
$where_btlog = 'WHERE arm_payment_gateway="bank_transfer"';
if (!empty($filter_pstatus) && $filter_pstatus != '0') {
if ($filter_pstatus == 'success') {
$where_btlog .= $wpdb->prepare(" AND `arm_transaction_status`=%s",'1');
}
if ($filter_pstatus == 'pending') {
$where_btlog .= $wpdb->prepare(" AND `arm_transaction_status`=%s",'0');
}
if ($filter_pstatus == 'canceled') {
$where_btlog .= $wpdb->prepare(" AND `arm_transaction_status`=%s",'2');
}
}
$where_btlog .= $wpdb->prepare(" AND `arm_is_post_payment`=%d AND `arm_is_gift_payment`=%d AND `arm_paid_post_id`=%d",0,0,0);
$sqlLimit = '';
if (!empty($limit) && $limit != 0) {
$sqlLimit = "LIMIT {$limit}";
}
$logs = $wpdb->get_results("SELECT * FROM `".$ARMember->tbl_arm_payment_log."` $where_btlog ORDER BY `arm_log_id` DESC {$sqlLimit}"); //phpcs:ignore --Reason $ARMember->tbl_arm_payment_log is a table name
if (!empty($logs)) {
foreach ($logs as $l) {
$bt_logs[] = $this->arm_convert_bt_to_main_log($l);
}
}
}
}
return $bt_logs;
}
function arm_convert_bt_to_main_log($data)
{
$main_logs = array();
if (!empty($data)) {
$lStatus = 'pending';
if ($data->arm_transaction_status == '1') {
$lStatus = 'success';
}
if ($data->arm_transaction_status == '2') {
$lStatus = 'canceled';
}
$arm_coupon_on_each_subscriptions = isset($data->arm_coupon_on_each_subscriptions) ? $data->arm_coupon_on_each_subscriptions : '0';
$main_log = array(
'arm_log_id' => $data->arm_log_id,
'arm_invoice_id' => $data->arm_invoice_id,
'arm_user_id' => $data->arm_user_id,
'arm_first_name' => $data->arm_first_name,
'arm_last_name' => $data->arm_last_name,
'arm_plan_id' => $data->arm_plan_id,
'arm_payment_gateway' => 'bank_transfer',
'arm_payment_type' => $data->arm_payment_type,
'arm_token' => '',
'arm_payer_email' => $data->arm_payer_email,
'arm_receiver_email' => '',
'arm_transaction_id' => $data->arm_transaction_id,
'arm_transaction_payment_type' => $data->arm_transaction_payment_type,
'arm_transaction_status' => $lStatus,
'arm_payment_date' => $data->arm_created_date,
'arm_amount' => $data->arm_amount,
'arm_currency' => $data->arm_currency,
'arm_extra_vars' => maybe_unserialize($data->arm_extra_vars),
'arm_coupon_code' => $data->arm_coupon_code,
'arm_coupon_discount' => $data->arm_coupon_discount,
'arm_coupon_discount_type' => $data->arm_coupon_discount_type,
'arm_created_date' => $data->arm_created_date,
'arm_coupon_on_each_subscriptions' => $arm_coupon_on_each_subscriptions,
);
}
return $main_log;
}
function arm_change_bank_transfer_status($log_id = 0, $new_status = 0, $check_permission = 1)
{
global $wp, $wpdb, $current_user, $arm_errors, $ARMember, $arm_global_settings, $arm_subscription_plans,$arm_manage_coupons, $arm_debug_payment_log_id, $arm_capabilities_global;
if(!empty($check_permission))
{
$ARMember->arm_check_user_cap($arm_capabilities_global['arm_manage_transactions'], '1');
}
$logid_exit_flag = '1';
if(empty($log_id))
{
$log_id = intval($_POST['log_id']);//phpcs:ignore
$logid_exit_flag = '';
}
if(empty($new_status))
{
$new_status = sanitize_text_field($_POST['log_status']);//phpcs:ignore
}
$response = array('status' => 'error', 'message' => esc_html__('Sorry, Something went wrong. Please try again.', 'ARMember'));
if (!empty($log_id) && $log_id != 0) {
$log_data = $wpdb->get_row( $wpdb->prepare("SELECT `arm_log_id`, `arm_user_id`, `arm_plan_id`, `arm_payment_cycle` FROM `" . $ARMember->tbl_arm_payment_log . "` WHERE `arm_log_id`=%d",$log_id)); //phpcs:ignore --Reason $ARMember->tbl_arm_payment_log is a table name
do_action('arm_payment_log_entry', 'bank_transfer', 'Change status log data', 'armember', $log_data, $arm_debug_payment_log_id);
if(!empty($log_data))
{
$user_id = $log_data->arm_user_id;
$plan_id = $log_data->arm_plan_id;
$payment_cycle = $log_data->arm_payment_cycle;
if ($new_status == '1') {
$plan_payment_mode = 'manual_subscription';
$is_recurring_payment = $arm_subscription_plans->arm_is_recurring_payment_of_user($user_id, $plan_id, $plan_payment_mode);
$nowDate = current_time('mysql');
$arm_last_payment_status = $wpdb->get_var($wpdb->prepare("SELECT `arm_transaction_status` FROM `" . $ARMember->tbl_arm_payment_log . "` WHERE `arm_user_id`=%d AND `arm_plan_id`=%d AND `arm_created_date`<=%s ORDER BY `arm_log_id` DESC LIMIT 0,1", $user_id, $plan_id, $nowDate)); //phpcs:ignore --Reason $ARMember->tbl_arm_payment_log is a table name
$arm_subscription_plans->arm_update_user_subscription_for_bank_transfer($user_id, $plan_id, 'bank_transfer', $payment_cycle, $arm_last_payment_status);
$wpdb->update($ARMember->tbl_arm_payment_log, array('arm_transaction_status' => 1), array('arm_log_id' => $log_id));
$userPlanData = get_user_meta($user_id, 'arm_user_plan_'.$plan_id, true);
$arm_manage_coupons->arm_coupon_apply_to_subscription($user_id, $log_data, 'bank_transfer', $userPlanData);
if($is_recurring_payment)
{
do_action('arm_after_recurring_payment_success_outside', $user_id, $plan_id, 'bank_transfer', $plan_payment_mode);
}
do_action('arm_after_accept_bank_transfer_payment', $user_id, $plan_id, $log_id);
$response = array('status' => 'success', 'message' => esc_html__('Bank transfer request has been approved.', 'ARMember'));
} else {
delete_user_meta($user_id, 'arm_change_plan_to');
$wpdb->update($ARMember->tbl_arm_payment_log, array('arm_transaction_status' => 2), array('arm_log_id' => $log_id));
do_action('arm_after_decline_bank_transfer_payment',$user_id,$plan_id);
$response = array('status' => 'success', 'message' => esc_html__('Bank transfer request has been cancelled.', 'ARMember'));
}
}
}
do_action('arm_payment_log_entry', 'bank_transfer', 'Change bank transfer response', 'armember', $response, $arm_debug_payment_log_id);
if(empty($logid_exit_flag))
{
echo arm_pattern_json_encode($response);
exit;
}
}
function arm_get_transaction_status_text($statuses = '')
{
$statusClass = 'active';
$lStatus = 'success';
switch ($statuses) {
case 'success':
$statusClass = 'active';
$lStatus = esc_html__('success', 'ARMember');
break;
case 'pending':
$statusClass = 'pending';
$lStatus = esc_html__('pending', 'ARMember');
break;
case 'canceled':
case 'cancelled':
$statusClass = 'canceled';
$lStatus = esc_html__('cancelled', 'ARMember');
break;
case 'failed':
$statusClass = 'failed';
$lStatus = esc_html__('failed', 'ARMember');
break;
case 'expired':
$statusClass = 'expired';
$lStatus = esc_html__('expired', 'ARMember');
break;
default:
break;
}
return '<span class="arm_item_status_text_transaction ' . $statusClass . '">' . ucfirst($lStatus) . '</span>';
}
function arm_load_transaction_grid() {
global $wpdb, $ARMember, $arm_slugs, $arm_members_class, $arm_global_settings, $arm_manage_coupons, $arm_payment_gateways, $arm_subscription_plans, $arm_invoice_tax_feature, $arm_default_user_details_text, $arm_capabilities_global;
$ARMember->arm_check_user_cap($arm_capabilities_global['arm_manage_transactions'], '1',1); //phpcs:ignore --Reason:Verifying nonce
$arm_invoice_tax_feature = get_option('arm_is_invoice_tax_feature', 0);
$date_format = $arm_global_settings->arm_get_wp_date_format();
$date_time_format = $arm_global_settings->arm_get_wp_date_time_format();
$global_currency = $arm_payment_gateways->arm_get_global_currency();
$general_settings = isset($arm_global_settings->global_settings) ? $arm_global_settings->global_settings : array();
$arm_currency_decimal = isset($general_settings['arm_currency_decimal_digit']) ? $general_settings['arm_currency_decimal_digit'] : 2;
$filter_gateway = isset($_REQUEST['gateway']) ? sanitize_text_field( $_REQUEST['gateway'] ) : '';
$filter_ptype = isset($_REQUEST['payment_type']) ? sanitize_text_field( $_REQUEST['payment_type'] ) : '';
$filter_pmode = isset($_REQUEST['payment_mode']) ? sanitize_text_field( $_REQUEST['payment_mode'] ) : '';
$filter_pstatus = isset($_REQUEST['payment_status']) ? sanitize_text_field( $_REQUEST['payment_status'] ) : '';
$payment_start_date = isset($_REQUEST['payment_start_date']) ? sanitize_text_field( $_REQUEST['payment_start_date'] ) : '';
$payment_end_date = isset($_REQUEST['payment_end_date']) ? sanitize_text_field( $_REQUEST['payment_end_date'] ) : '';
$arm_is_post_payment = isset($_REQUEST['arm_is_post_payment']) ? intval( $_REQUEST['arm_is_post_payment'] ) : 0;
$arm_is_gift_payment = isset($_REQUEST['arm_is_gift_payment']) ? intval( $_REQUEST['arm_is_gift_payment'] ) : 0;
$response_data = array();
$nowDate = current_time('mysql');
$where_plog = "WHERE 1=1 AND arm_display_log = 1 ";
if (!empty($filter_gateway) && $filter_gateway != '0') {
$where_plog .= $wpdb->prepare(" AND `arm_payment_gateway`=%s",$filter_gateway);
}
if (!empty($filter_ptype) && $filter_ptype != '0') {
$where_plog .= $wpdb->prepare(" AND `arm_payment_type`=%s",$filter_ptype);
}
if (!empty($filter_pmode) && $filter_pmode != '0') {
$where_plog .= $wpdb->prepare(" AND `arm_payment_mode`=%s",$filter_pmode);
}
$where_plog .= $wpdb->prepare(" AND `arm_is_post_payment`= %s AND `arm_is_gift_payment`= %s",$arm_is_post_payment,$arm_is_gift_payment);
if (!empty($filter_pstatus) && $filter_pstatus != '0') {
$filter_pstatus = strtolower($filter_pstatus);
$status_query = $wpdb->prepare(" AND ( LOWER(`arm_transaction_status`)=%s",$filter_pstatus);
if( !in_array($filter_pstatus,array('success','pending','canceled')) ){
$status_query .= ")";
}
switch ($filter_pstatus) {
case 'success':
$status_query .= $wpdb->prepare(" OR `arm_transaction_status`=%s)",'1');
break;
case 'pending':
$status_query .= $wpdb->prepare(" OR `arm_transaction_status`=%s)",'0');
break;
case 'canceled':
$status_query .= $wpdb->prepare(" OR `arm_transaction_status`=%s)",'2');
break;
}
$where_plog .= $status_query;
}
/*
$total_count = $wpdb->get_results('SELECT COUNT(*) as total_logs FROM `' . $ARMember->tbl_arm_payment_log . '` WHERE `arm_is_post_payment`='.$arm_is_post_payment);
$total_fpaylog = $total_count[0]->total_logs;
$total_counter = $total_fpaylog;
*/
$sorting_ord = isset($_REQUEST['sSortDir_0']) ? strtoupper( sanitize_text_field( $_REQUEST['sSortDir_0'] ) ) : 'DESC';
$sorting_col = (isset($_REQUEST['iSortCol_0']) && $_REQUEST['iSortCol_0'] > 0) ? intval( $_REQUEST['iSortCol_0'] ) : '';
if( isset($_REQUEST['iSortCol_0']) && $_REQUEST['iSortCol_0'] == 0){
$sorting_ord = 'DESC';
}
$offset = isset($_REQUEST['iDisplayStart']) ? intval( $_REQUEST['iDisplayStart'] ) : 0;
$limit = isset($_REQUEST['iDisplayLength']) ? intval( $_REQUEST['iDisplayLength'] ) : 10;
$phlimit = " LIMIT {$offset},{$limit}";
switch ($sorting_col) {
case 1:
$column_name = "`arm_transaction_id`";
break;
case 2:
$column_name = "`arm_invoice_id`";
break;
case 3:
$column_name = "`arm_first_name`";
break;
case 4:
$column_name = "`arm_last_name`";
break;
case 5:
$column_name = "`arm_user_login`";
break;
case 6:
$column_name = "`arm_user_email`";
break;
case 7:
$column_name = "`arm_subscription_plan_name`";
break;
case 8:
$column_name = "`arm_payment_gateway`";
break;
case 9:
$column_name = "`arm_payment_type`";
break;
case 10:
$column_name = "`arm_payer_email`";
break;
case 11:
$column_name = "`arm_transaction_status`";
break;
case 13:
$column_name = "`arm_amount`";
break;
default:
$column_name = "`arm_created_date`";
break;
}
$orderby = "ORDER BY `arm_payment_history_log`.{$column_name} {$sorting_ord}";
$sSearch = isset($_REQUEST['sSearch']) ? sanitize_text_field( $_REQUEST['sSearch'] ) : '';
$search_ = "";
if ($sSearch != '') {
$search_ = $wpdb->prepare(" AND (`arm_payment_history_log`.`arm_transaction_id` LIKE %s OR `arm_payment_history_log`.`arm_token` LIKE %s OR `arm_payment_history_log`.`arm_payer_email` LIKE %s OR `arm_payment_history_log`.`arm_created_date` LIKE %s OR `arm_payment_history_log`.`arm_first_name` LIKE %s OR `arm_payment_history_log`.`arm_last_name` LIKE %s OR `arm_user_login` LIKE %s OR `arm_user_email` LIKE %s ) ",'%'.$sSearch.'%','%'.$sSearch.'%','%'.$sSearch.'%','%'.$sSearch.'%','%'.$sSearch.'%','%'.$sSearch.'%','%'.$sSearch.'%','%'.$sSearch.'%');
}
$pt_where = 'WHERE';
$pt_where .= $wpdb->prepare(" `arm_is_post_payment`=%s AND `arm_is_gift_payment`=%d ",$arm_is_post_payment,$arm_is_gift_payment);
if(!empty($payment_start_date)) {
$payment_start_date = date("Y-m-d", strtotime($payment_start_date));
$pt_where .= $wpdb->prepare(" AND `pt`.`arm_created_date` >= %s ",$payment_start_date);
}
if(!empty($payment_end_date)) {
$payment_end_date = date("Y-m-d", strtotime("+1 day", strtotime($payment_end_date)));
if($pt_where != "") $pt_where .= " AND "; else $pt_where = " WHERE ";
$pt_where .= $wpdb->prepare(" `pt`.`arm_created_date` < %s ",$payment_end_date);
}
$ctquery = "SELECT pt.arm_log_id,pt.arm_invoice_id,pt.arm_user_id,pt.arm_first_name,pt.arm_last_name,pt.arm_plan_id,pt.arm_payer_email,pt.arm_token,pt.arm_transaction_id,pt.arm_amount,pt.arm_currency,pt.arm_is_trial,pt.arm_payment_gateway,pt.arm_payment_mode,pt.arm_transaction_status,pt.arm_created_date,pt.arm_payment_type,pt.arm_extra_vars,sp.arm_subscription_plan_name,wpu.user_login as arm_user_login, wpu.user_email as arm_user_email,pt.arm_display_log as arm_display_log,pt.arm_is_post_payment as arm_is_post_payment,pt.arm_is_gift_payment as arm_is_gift_payment FROM `" . $ARMember->tbl_arm_payment_log . "` pt LEFT JOIN `" . $ARMember->tbl_arm_subscription_plans . "` sp ON pt.arm_plan_id = sp.arm_subscription_plan_id LEFT JOIN `" . $wpdb->users . "` wpu ON pt.arm_user_id = wpu.ID " . $pt_where;
$ptquery = "{$ctquery}";
$total_payment_rows = $wpdb->prepare("SELECT (SELECT COUNT(*) FROM `".$ARMember->tbl_arm_payment_log."` WHERE `arm_display_log` = %d AND `arm_is_post_payment`=%d AND `arm_is_gift_payment`=%d) as total_payment_log",1,$arm_is_post_payment,$arm_is_gift_payment); //phpcs:ignore --Reason $ARMember->tbl_arm_payment_log is a table name
$payment_rows = $wpdb->get_results($total_payment_rows); //phpcs:ignore --Reason $total_payment_rows is a prepared query
$before_filter = intval($payment_rows[0]->total_payment_log);
$payment_logs_before_limit = "SELECT COUNT(*) AS total_payments FROM (" . $ptquery . ") AS arm_payment_history_log {$where_plog} {$search_} {$orderby}";
$ex_query = $wpdb->get_results($payment_logs_before_limit);//phpcs:ignore --Reason payment_logs_before_limit is a prepared query
$after_filter = intval($ex_query[0]->total_payments);
$payment_grid_query = "SELECT * FROM (" . $ptquery . ") AS arm_payment_history_log {$where_plog} {$search_} {$orderby} {$phlimit}";
$phquery = $wpdb->get_results($payment_grid_query, ARRAY_A);//phpcs:ignore --Reason payment_grid_query is a prepared query
$payment_log = $phquery;
if (!empty($payment_log)) {
$effectiveData = array();
$ai = 0;
$defaultPlanData = $arm_subscription_plans->arm_default_plan_array();
$arm_all_plan_arr = array();
foreach ($payment_log as $rc) {
$rc = (object) $rc;
$transactionID = $rc->arm_log_id;
$arm_transaction_status = $rc->arm_transaction_status;
switch ($arm_transaction_status) {
case '0':
$arm_transaction_status = 'pending';
break;
case '1':
$arm_transaction_status = 'success';
break;
case '2':
$arm_transaction_status = 'canceled';
break;
default:
$arm_transaction_status = $rc->arm_transaction_status;
break;
}
$log_type = ($rc->arm_payment_gateway == 'bank_transfer') ? 'bt_log' : 'other';
$extraVars = (isset($rc->arm_extra_vars)) ? maybe_unserialize($rc->arm_extra_vars) : array();
if( $arm_is_post_payment ){
$bulkCheckId = 'pp-cb-item-action-' . $rc->arm_log_id;
$bulkCheckName = 'pp-';
} else if( $arm_is_gift_payment ){
$bulkCheckId = 'gp-cb-item-action-' . $rc->arm_log_id;
$bulkCheckName = 'gp-';
} else {
$bulkCheckId = 'cb-item-action-' . $rc->arm_log_id;
$bulkCheckName = '';
}
if ($rc->arm_payment_gateway == 'bank_transfer'):
$response_data[$ai][0] = '<input id="' . esc_attr($bulkCheckId) . '" class="chkstanard arm_bt_transaction_bulk_check" type="checkbox" value="' . esc_attr($rc->arm_log_id) . '" name="'.esc_attr($bulkCheckName).'item-action[]">';
else:
$response_data[$ai][0] = '<input id="' . esc_attr($bulkCheckId) . '" class="chkstanard arm_transaction_bulk_check" type="checkbox" value="' . esc_attr($rc->arm_log_id) . '" name="'.esc_attr($bulkCheckName).'item-action[]">';
endif;
$response_data[$ai][1] = (!empty($rc->arm_transaction_id)) ? stripslashes($rc->arm_transaction_id) : esc_html__('Manual', 'ARMember');
$arm_invoice_id = $arm_global_settings->arm_manipulate_invoice_id($rc->arm_invoice_id);
if($arm_transaction_status == 'success' && $arm_invoice_tax_feature == 1) {
$response_data[$ai][2] = "<a class='armhelptip arm_invoice_detail' href='javascript:void(0)' data-log_type='" . esc_attr($log_type) . "' data-log_id='" . esc_attr($transactionID) . "' title='" . esc_attr__('View Invoice', 'ARMember') . "'>".$arm_invoice_id."</a>";
}
else {
$response_data[$ai][2] = $arm_invoice_id;
}
$data = get_userdata($rc->arm_user_id);
if (!empty($data)) {
$response_data[$ai][3] = (!empty($rc->arm_first_name))? $rc->arm_first_name :'-';
$response_data[$ai][4] = (!empty($rc->arm_last_name))? $rc->arm_last_name:'-';
$response_data[$ai][5] = "<a class='arm_openpreview_popup' href='javascript:void(0)' data-id='".$rc->arm_user_id."' data-arm_hide_edit='1'>".$data->user_login."</a>";
$response_data[$ai][6] = !empty($rc->arm_user_email) ? $rc->arm_user_email : '-';
}
else
{
$response_data[$ai][3] = $arm_default_user_details_text;
$response_data[$ai][4] = $arm_default_user_details_text;
$response_data[$ai][5] = $arm_default_user_details_text;
$response_data[$ai][6] = $arm_default_user_details_text;
}
$response_data[$ai][7] = $arm_subscription_plans->arm_get_plan_name_by_id($rc->arm_plan_id);
$userPlanData = get_user_meta($rc->arm_user_id, 'arm_user_plan_'.$rc->arm_plan_id, true);
$change_plan = $subscr_effective = '';
if(!empty($userPlanData)){
$change_plan = $userPlanData['arm_change_plan_to'];
$subscr_effective = $userPlanData['arm_subscr_effective'];
}
if (!isset($effectiveData[$rc->arm_user_id]) && !empty($change_plan) && $change_plan == $rc->arm_plan_id && $subscr_effective > strtotime($nowDate)) {
$response_data[$ai][7] .= '<div>' . esc_html__('Effective from', 'ARMember') . ' ' . date_i18n($date_format, $subscr_effective) . '</div>';
$effectiveData[$rc->arm_user_id][] = $change_plan;
}
if($rc->arm_payment_gateway == '')
{
$payment_gateway = esc_html__('Manual', 'ARMember');
}
else {
$payment_gateway = $arm_payment_gateways->arm_gateway_name_by_key($rc->arm_payment_gateway);
}
$response_data[$ai][8] = $payment_gateway;
$payment_type = $rc->arm_payment_type;
$payment_type_text = '';
$plan_id = $rc->arm_plan_id;
$userPlanDatameta = get_user_meta($rc->arm_user_id, 'arm_user_plan_' . $plan_id, true);
$userPlanDatameta = !empty($userPlanDatameta) ? $userPlanDatameta : array();
$oldPlanData = shortcode_atts($defaultPlanData, $userPlanDatameta);
$arm_old_plan_detail = $oldPlanData['arm_current_plan_detail'];
if (!empty($arm_old_plan_detail)) {
$plan_info = new ARM_Plan($plan_id);
$plan_info->init((object) $arm_old_plan_detail);
}
else
{
if(!empty($arm_all_plan_arr[$plan_id]))
{
$plan_info = $arm_all_plan_arr[$plan_id];
}
else
{
$plan_info = new ARM_Plan($plan_id);
$arm_all_plan_arr[$plan_id] = $plan_info;
}
}
$user_payment_mode = "";
$log_payment_mode = isset($rc->arm_payment_mode) ? $rc->arm_payment_mode : '';
if($plan_info->is_recurring()) {
if($log_payment_mode != '') {
if($log_payment_mode == 'manual_subscription') {
$user_payment_mode .= "";
}
else {
$user_payment_mode .= "<span>(".esc_html__('Automatic','ARMember').")</span>";
}
}
//$payment_type = 'subscription';
$payment_type = $plan_info->options['payment_type'];
}
if($payment_type =='one_time'){
$payment_type_text = esc_html__('One Time', 'ARMember');
}
else if($payment_type == 'subscription'){
$payment_type_text = esc_html__('Subscription', 'ARMember');
}
$arm_trial_tran = ($rc->arm_is_trial == 1) ? ' (' . esc_html__('Trial Transaction','ARMember') . ')' : '';
$response_data[$ai][9] = $payment_type_text.' '.$user_payment_mode.$arm_trial_tran;
$payer_email = '';
if($rc->arm_payer_email == '')
{
$extra = maybe_unserialize($rc->arm_extra_vars);
if($extra != '') {
if(array_key_exists('manual_by',$extra)) {
$payer_email = '<em>' . esc_html__($extra['manual_by'], 'ARMember') . '</em>';//phpcs:ignore
}
}
}
else
{
$payer_email = $rc->arm_payer_email;
}
if($payer_email=='')
{
$payer_email = $arm_default_user_details_text;
}
$response_data[$ai][10] = $payer_email;
$transStatus = $this->arm_get_transaction_status_text($arm_transaction_status);
$failed_reason = (isset($extraVars['error']) && !empty($extraVars['error'])) ? $extraVars['error'] : '';
if ($rc->arm_transaction_status == 'failed' && !empty($failed_reason)) {
$transStatus = '<span class="armhelptip" title="' . $failed_reason . '">' . $transStatus . '</span>';
}
$response_data[$ai][11] = $transStatus;
$response_data[$ai][12] = date_i18n($date_time_format, strtotime($rc->arm_created_date));
$rc->arm_currency = (isset($rc->arm_currency) && !empty($rc->arm_currency)) ? strtoupper($rc->arm_currency) : strtoupper($global_currency);
$arm_amount = number_format($rc->arm_amount,$arm_currency_decimal);
$response_data[$ai][13] = $arm_payment_gateways->arm_amount_set_separator($rc->arm_currency, $arm_amount) . ' ' . strtoupper($rc->arm_currency);
$response_data[$ai][14] = (isset($extraVars['card_number']) && !empty($extraVars['card_number'])) ? $extraVars['card_number'] : '-';
$gridAction = "<div class='arm_grid_action_btn_container'>";
if( $arm_transaction_status == 'success' && $arm_invoice_tax_feature == 1 ) {
$gridAction .= "<a class='armhelptip arm_invoice_detail' href='javascript:void(0)' data-log_type='" . esc_attr($log_type) . "' data-log_id='" . esc_attr($transactionID) . "' title='" . esc_attr__('View Invoice', 'ARMember') . "'><img src='" . MEMBERSHIP_IMAGES_URL . "/invoice_icon.png' onmouseover=\"this.src='" . MEMBERSHIP_IMAGES_URL . "/invoice_icon_hover.png';\" onmouseout=\"this.src='" . MEMBERSHIP_IMAGES_URL . "/invoice_icon.png';\" /></a>";
}
$gridAction .= "<a class='armhelptip arm_preview_log_detail' href='javascript:void(0)' data-log_type='" . esc_attr($log_type) . "' data-log_id='" . esc_attr($transactionID) . "' data-trxn_status='". esc_attr($arm_transaction_status)."' title='" . esc_attr__('View Detail', 'ARMember') . "'><img src='" . MEMBERSHIPLITE_IMAGES_URL . "/grid_preview.svg' onmouseover=\"this.src='" . MEMBERSHIPLITE_IMAGES_URL . "/grid_preview_hover.svg';\" onmouseout=\"this.src='" . MEMBERSHIPLITE_IMAGES_URL . "/grid_preview.svg';\" /></a>";
$gridAction .= "<a href='javascript:void(0)' data-log_type='" . esc_attr($log_type) . "' data-delete_log_id='" . esc_attr($transactionID) . "' data-trxn_status='".esc_attr($arm_transaction_status)."' onclick='showConfirmBoxCallback(".esc_attr($transactionID).");'><img src='" . MEMBERSHIPLITE_IMAGES_URL . "/grid_delete.svg' class='armhelptip' title='" . esc_attr__('Delete', 'ARMember') . "' onmouseover=\"this.src='" . MEMBERSHIPLITE_IMAGES_URL . "/grid_delete_hover.svg';\" onmouseout=\"this.src='" . MEMBERSHIPLITE_IMAGES_URL . "/grid_delete.svg';\" /></a>";
$arm_transaction_del_cls = 'arm_transaction_delete_btn';
if( $arm_is_post_payment ){
$arm_transaction_del_cls .= ' arm_pp_transaction_delete_btn';
}
else if( $arm_is_gift_payment ){
$arm_transaction_del_cls .= ' arm_gp_transaction_delete_btn';
}
$gridAction .= $arm_global_settings->arm_get_confirm_box($transactionID, esc_html__("Are you sure you want to delete this transaction?", 'ARMember'), $arm_transaction_del_cls, $log_type,esc_html__("Delete", 'ARMember'),esc_html__("Cancel", 'ARMember'),esc_html__("Delete", 'ARMember'));
$gridAction .= "</div>";
$response_data[$ai][15] = $gridAction;
$ai++;
}
}
$columns = ',' . esc_html__('Transaction ID', 'ARMember') . ',' . esc_html__('Invoice ID', 'ARMember') . ',' . esc_html__('User', 'ARMember') . ',' . esc_html__('Membership', 'ARMember') . ',' . esc_html__('Gateway', 'ARMember') . ',' . esc_html__('Payment Type', 'ARMember') . ',' . esc_html__('Payer Email', 'ARMember') . ',' . esc_html__('Transaction Status', 'ARMember') . ',' . esc_html__('Payment Date', 'ARMember') . ',' . esc_html__('Amount', 'ARMember') . ',' . esc_html__('Credit Card Number', 'ARMember') . ',';
$sEcho = isset($_REQUEST['sEcho']) ? intval($_REQUEST['sEcho']) : '';
$output = array(
'sColumn' => $columns,
'sEcho' => $sEcho,
'iTotalRecords' => $before_filter, // Before Filtered Records
'iTotalDisplayRecords' => $after_filter, // After filter records,
'aaData' => $response_data
);
echo json_encode($output);
die();
}
}
}
global $arm_transaction;
$arm_transaction = new ARM_transaction();