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 + -
显示快捷键?