paysubscriptions.php
来自「sabreipb 2.1.6 utf-8中文版本!」· PHP 代码 · 共 1,024 行 · 第 1/3 页
PHP
1,024 行
if ( $sub_chosen < 1 ) { $this->ipsclass->Error( array( 'LEVEL' => 1, 'MSG' => 'subs_no_selected' ) ); } //-------------------------------------------- // Get all packages //-------------------------------------------- $this->ipsclass->DB->query("SELECT * FROM ibf_subscriptions ORDER BY sub_cost"); while ( $s = $this->ipsclass->DB->fetch_row() ) { $subs[ $s['sub_id'] ] = $s; } //-------------------------------------------- // Get all gateways [we can upgrade with] //-------------------------------------------- $this->ipsclass->DB->cache_add_query( 'mod_payment_method', array(), 'sql_subsm_queries' ); $this->ipsclass->DB->cache_exec_query(); while ( $m = $this->ipsclass->DB->fetch_row() ) { if ( $m['submethod_active'] == 1 AND $m['subextra_can_upgrade'] == 1 ) { $upg_methods[ $m['submethod_id'] ] = $m; } $all_methods[ $m['submethod_id'] ] = $m; } if ( $upgrade != 0 ) { //-------------------------------------------- // We're upgrading!! Yay! - Get cur subs //-------------------------------------------- $this->ipsclass->DB->query("SELECT * FROM ibf_subscription_trans WHERE subtrans_member_id={$this->ipsclass->member['id']} AND subtrans_sub_id=$cur_id AND subtrans_state='paid'"); if ( ! $cur_trans = $this->ipsclass->DB->fetch_row() ) { $this->ipsclass->Error( array( 'LEVEL' => 1, 'MSG' => 'subs_no_curid' ) ); } //-------------------------------------------- // Check stuff //-------------------------------------------- if ( ! is_array( $subs[ $cur_id ] ) ) { $this->ipsclass->Error( array( 'LEVEL' => 1, 'MSG' => 'subs_no_curid' ) ); } if ( count($upg_methods) < 1 ) { $this->ipsclass->Error( array( 'LEVEL' => 1, 'MSG' => 'subs_no_upgrade' ) ); } //-------------------------------------------- // Still here? Good - summary and show methods //-------------------------------------------- $balance = $subs[ $sub_chosen ]['sub_cost'] - $cur_trans['subtrans_paid']; $end_date = ( $subs[ $sub_chosen ]['sub_unit'] == 'x' or $subs[ $cur_id ]['sub_unit'] == 'x' ) ? $this->ipsclass->lang['no_expire'] : $this->ipsclass->get_date( $cur_trans['subtrans_end_date'], 'JOINED' ); $this->ipsclass->lang['sc_upgrade_string'] = sprintf( $this->ipsclass->lang['sc_upgrade_string'], $subs[ $cur_trans['subtrans_sub_id'] ]['sub_title'], $subs[ $sub_chosen ]['sub_title'], $end_date, sprintf( "%.2f", $balance * $this->gateway->cho_currency['subcurrency_exchange'] ) . ' '.$this->gateway->cho_currency['subcurrency_code'] ); $this->output .= $this->ipsclass->compiled_templates['skin_subscriptions']->sub_two_upgrade_summary(); $this->output .= $this->ipsclass->compiled_templates['skin_subscriptions']->sub_two_methods_top($sub_chosen, $upgrade, $cur_id, $this->gateway->cho_currency['subcurrency_code']); foreach( $upg_methods as $id => $method ) { $this->output .= $this->ipsclass->compiled_templates['skin_subscriptions']->sub_two_methods_row($id, $method['submethod_title'],$method['submethod_desc']); } $this->output .= $this->ipsclass->compiled_templates['skin_subscriptions']->sub_two_methods_bottom(); $this->output .= $this->ipsclass->compiled_templates['skin_subscriptions']->sub_two_methods_continue_button(); } else { //-------------------------------------------- // We're not upgrading!! Boo(bies)! :0 //-------------------------------------------- $this->ipsclass->lang['sc_normal_string'] = sprintf( $this->ipsclass->lang['sc_normal_string'], $subs[ $sub_chosen ]['sub_title'], sprintf( "%.2f", $subs[ $sub_chosen ]['sub_cost'] * $this->gateway->cho_currency['subcurrency_exchange'] ) . ' '.$this->gateway->cho_currency['subcurrency_code'] ); $this->output .= $this->ipsclass->compiled_templates['skin_subscriptions']->sub_two_normal_summary(); $this->output .= $this->ipsclass->compiled_templates['skin_subscriptions']->sub_two_methods_top($sub_chosen, $upgrade, $cur_id, $this->gateway->cho_currency['subcurrency_code']); foreach( $all_methods as $id => $method ) { $this->output .= $this->ipsclass->compiled_templates['skin_subscriptions']->sub_two_methods_row($id, $method['submethod_title'],$method['submethod_desc']); } $this->output .= $this->ipsclass->compiled_templates['skin_subscriptions']->sub_two_methods_bottom(); $this->output .= $this->ipsclass->compiled_templates['skin_subscriptions']->sub_two_methods_continue_button(); } } /*-------------------------------------------------------------------------*/ // Show Index (Default subs page) /*-------------------------------------------------------------------------*/ function do_index() { $current = array(); $dead = array(); $subs = array(); //-------------------------------------------- // Get all packages //-------------------------------------------- $this->ipsclass->DB->query("SELECT * FROM ibf_subscriptions ORDER BY sub_cost"); while ( $s = $this->ipsclass->DB->fetch_row() ) { $subs[ $s['sub_id'] ] = $s; } //-------------------------------------------- // Get all transactions with our memberid //-------------------------------------------- $this->ipsclass->DB->query("SELECT * FROM ibf_subscription_trans WHERE subtrans_member_id={$this->ipsclass->member['id']}"); while ( $r = $this->ipsclass->DB->fetch_row() ) { if ( $r['subtrans_state'] == 'expired' OR $r['subtrans_state'] == 'dead' OR $r['subtrans_state'] == 'failed' ) { $dead[ $r['subtrans_id'] ] = $r; } else { $current[ $r['subtrans_id'] ] = $r; } } //-------------------------------------------- // Show dead / expired subs //-------------------------------------------- if ( count($dead) > 0 ) { $this->output .= $this->ipsclass->compiled_templates['skin_subscriptions']->sub_choose_dead_top(); foreach( $dead as $did => $didnt ) { $end_date = ($subs[ $didnt['subtrans_sub_id'] ]['sub_unit'] == 'x') ? $this->ipsclass->lang['no_expire'] : $this->ipsclass->get_date($cdata['subtrans_end_date'], 'JOINED', 1); $this->output .= $this->ipsclass->compiled_templates['skin_subscriptions']->sub_choose_dead_row( $did, $subs[ $didnt['subtrans_sub_id'] ]['sub_title'], $this->ipsclass->get_date($didnt['subtrans_start_date'], 'JOINED', 1), $end_date, sprintf( "%.2f", $didnt['subtrans_paid'] * $this->gateway->cho_currency['subcurrency_exchange'] ), $this->ipsclass->lang['pay_'.strtolower($didnt['subtrans_state'])] ); } $this->output .= $this->ipsclass->compiled_templates['skin_subscriptions']->sub_choose_dead_bottom(); } //-------------------------------------------- // We have current subscriptions? //-------------------------------------------- $max_cost = 0; $max_id = 0; $max_data = 0; if ( count($current) > 0 ) { $this->output .= $this->ipsclass->compiled_templates['skin_subscriptions']->sub_choose_current_top(); foreach( $current as $cid => $cdata ) { $end_date = ($subs[ $cdata['subtrans_sub_id'] ]['sub_unit'] == 'x') ? $this->ipsclass->lang['no_expire'] : $this->ipsclass->get_date($cdata['subtrans_end_date'], 'JOINED', 1); $this->output .= $this->ipsclass->compiled_templates['skin_subscriptions']->sub_choose_current_row( $cid, $subs[ $cdata['subtrans_sub_id'] ]['sub_title'], $this->ipsclass->get_date($cdata['subtrans_start_date'], 'JOINED', 1), $end_date, sprintf( "%.2f", $cdata['subtrans_paid'] * $this->gateway->cho_currency['subcurrency_exchange'] ), $this->ipsclass->lang['pay_'.strtolower($cdata['subtrans_state'])] ); if ( $subs[ $cdata['subtrans_sub_id'] ]['sub_cost'] > $max_cost ) { $max_cost = $subs[ $cdata['subtrans_sub_id'] ]['sub_cost']; $max_id = $cdata['subtrans_sub_id']; $max_data = $cdata; $max_state = $cdata['subtrans_state']; $max_end = $subs[ $cdata['subtrans_sub_id'] ]['sub_unit']; } } $this->output .= $this->ipsclass->compiled_templates['skin_subscriptions']->sub_choose_current_bottom(); //-------------------------------------------- // Do we have any upgradeable packages? // First, check the gateways // CHECK: Are we pending? If so - don't allow // any upgrades until it's paid //-------------------------------------------- $can_upgrade = 0; if ( $max_state != 'pending' ) { $this->ipsclass->DB->cache_add_query( 'mod_do_index', array(), 'sql_subsm_queries' ); $this->ipsclass->DB->cache_exec_query(); while ( $m= $this->ipsclass->DB->fetch_row() ) { if ( $m['submethod_active'] == 1 AND $m['subextra_can_upgrade'] == 1 ) { $can_upgrade = 1; break; } } } if ( $can_upgrade == 1 ) { //-------------------------------------------- // So far so good, now lets check if we can // have anywhere to go (ie. we're not on the top tier) //-------------------------------------------- $this->ipsclass->DB->query("SELECT * FROM ibf_subscriptions WHERE sub_cost > $max_cost ORDER BY sub_cost"); if ( $this->ipsclass->DB->get_num_rows() ) { // We have some! $this->output .= $this->ipsclass->compiled_templates['skin_subscriptions']->sub_choose_upgrade_top($max_id, $this->gateway->cho_currency['subcurrency_code']); while ( $row = $this->ipsclass->DB->fetch_row() ) { $end_date = ($row['sub_unit'] == 'x' or $max_end == 'x') ? $this->ipsclass->lang['no_expire'] : $this->ipsclass->get_date( $max_data['subtrans_end_date'], 'JOINED', 1 ); $this->output .= $this->ipsclass->compiled_templates['skin_subscriptions']->sub_choose_upgrade_row( $row['sub_id'], $row['sub_title'], $row['sub_desc'], sprintf( "%.2f", ($row['sub_cost'] - $max_cost) * $this->gateway->cho_currency['subcurrency_exchange'] ), $end_date ); } $this->output .= $this->ipsclass->compiled_templates['skin_subscriptions']->sub_choose_upgrade_bottom(); } else { // We don't! } } } else { //-------------------------------------------- // Show new subs //-------------------------------------------- $this->output .= $this->ipsclass->compiled_templates['skin_subscriptions']->sub_choose_new_top($this->gateway->cho_currency['subcurrency_code']); foreach( $subs as $id => $row ) { $duration = $row['sub_length']; if ( $duration > 1 ) { $duration .= ' '.$this->ipsclass->lang[ 'timep_'.$row['sub_unit'] ]; } else { $duration .= ' '.$this->ipsclass->lang[ 'time_'.$row['sub_unit'] ]; } $end_date = ($row['sub_unit'] == 'x') ? $this->ipsclass->lang['no_expire'] : $duration; $this->output .= $this->ipsclass->compiled_templates['skin_subscriptions']->sub_choose_new_row( $row['sub_id'], $row['sub_title'], $row['sub_desc'], sprintf( "%.2f", $row['sub_cost'] * $this->gateway->cho_currency['subcurrency_exchange'] ), $end_date ); } $this->output .= $this->ipsclass->compiled_templates['skin_subscriptions']->sub_choose_new_bottom(); } $this->output .= $this->ipsclass->compiled_templates['skin_subscriptions']->sub_currency_change_form( $this->_make_currency_dropdown(), $this->ipsclass->base_url.'act=paysubs&CODE=index' ); $this->output .= $this->ipsclass->compiled_templates['skin_subscriptions']->sub_page_bottom(); } /*-------------------------------------------------------------------------*/ // Load Menu /*-------------------------------------------------------------------------*/ function _load_menu() { if ( ! $this->is_from_ucp ) { $menu_html = $this->ipsclass->compiled_templates['skin_subscriptions']->sub_no_cp_start(); $this->ipsclass->print->add_output( $menu_html ); return; } //-------------------------------------------- // Check viewing permissions, etc //-------------------------------------------- if ( empty($this->ipsclass->member['id']) or $this->ipsclass->member['id'] == "" or $this->ipsclass->member['id'] == 0 ) { $this->ipsclass->Error( array( 'LEVEL' => 1, 'MSG' => 'no_guests' ) ); } //-------------------------------------------- // Load class //--------------------------------------------
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?