1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.

XF 1.1 Regarding user upgrades

Discussion in 'XenForo Questions and Support' started by dumindu89, Aug 19, 2012.

  1. dumindu89

    dumindu89 New Member

    How to list a user upgrade which can purchase more than one time?
    Let's say I want to sell SEO package and same user can buy more than one time as he needed.
     
  2. Jake Bunce

    Jake Bunce XenForo Moderator Staff Member

    XenForo appears to have code in the user upgrade model to handle extensions to existing upgrades, but the account_upgrades template does not present the user with the option to purchase again upgrades which are already active for them. You can try editing the template:

    Admin CP -> Appearance -> Templates -> account_upgrades

    Use this code. I changed the foreach contents for purchased upgrades to match the available upgrades so that it shows the purchase button:

    Code:
    <xen:title>{xen:phrase account_upgrades}</xen:title>
    
    <xen:require css="account_upgrades.css" />
    
    <xen:if is="{$available}">
    	<div class="section">
    		<h3 class="subHeading">{xen:phrase available_upgrades}</h3>
    		<ul>
    		<xen:foreach loop="$available" value="$upgrade">
    			<li class="primaryContent">
    				<div class="upgrade">					
    					<form action="{$payPalUrl}" method="post" class="upgradeForm">
    						<div class="cost">{$upgrade.costPhrase}</div>
    						<xen:if is="{$upgrade.length_unit} AND {$upgrade.recurring}">
    								
    							<input type="hidden" name="cmd" value="_xclick-subscriptions" />
    							<input type="hidden" name="a3" value="{$upgrade.cost_amount}" />
    							<input type="hidden" name="p3" value="{$upgrade.length_amount}" />
    							<input type="hidden" name="t3" value="{$upgrade.lengthUnitPP}" />
    							<input type="hidden" name="src" value="1" />
    							<input type="hidden" name="sra" value="1" />
    							
    							<input type="submit" value="{xen:phrase subscribe}" class="button" />
    						<xen:else />
    							<input type="hidden" name="cmd" value="_xclick" />
    							<input type="hidden" name="amount" value="{$upgrade.cost_amount}" />
    							
    							<input type="submit" value="{xen:phrase purchase}" class="button" />
    						</xen:if>
    						
    						<input type="hidden" name="business" value="{$xenOptions.payPalPrimaryAccount}" />
    						<input type="hidden" name="currency_code" value="{$upgrade.currency}" />
    						<input type="hidden" name="item_name" value="{xen:phrase account_upgrade}: {$upgrade.title} ({$visitor.username})" />
    						<input type="hidden" name="quantity" value="1" />
    						<input type="hidden" name="no_note" value="1" />
    						<input type="hidden" name="no_shipping" value="1" />
    						<input type="hidden" name="custom" value="{$visitor.user_id},{$upgrade.user_upgrade_id},token,{$visitor.csrf_token_page}" />
    						
    						<input type="hidden" name="charset" value="utf-8" />
    						<input type="hidden" name="email" value="{$visitor.email}" />
    						
    						<input type="hidden" name="return" value="{$requestPaths.fullBasePath}{xen:link account/upgrade-purchase}" />
    						<input type="hidden" name="cancel_return" value="{$requestPaths.fullBasePath}{xen:link index}" />
    						<input type="hidden" name="notify_url" value="{$xenOptions.boardUrl}/payment_callback.php" />
    					</form>
    					
    					<div class="upgradeMain">
    						<h4 class="title">{$upgrade.title}</h4>
    						<xen:if is="{$upgrade.description}">
    							<div class="description">{xen:string nl2br, $upgrade.description}</div>
    						</xen:if>
    					</div>
    				</div>
    			</li>
    		</xen:foreach>
    		</ul>
    	</div>
    </xen:if>
    
    <xen:if is="{$purchased}">
    	<div class="section">
    		<h3 class="subHeading">{xen:phrase purchased_upgrades}</h3>
    		<ul>
    		<xen:foreach loop="$purchased" value="$upgrade">
    			<li class="primaryContent">
    				<div class="upgrade">					
    					<form action="{$payPalUrl}" method="post" class="upgradeForm">
    						<div class="cost">{$upgrade.costPhrase}</div>
    						<xen:if is="{$upgrade.length_unit} AND {$upgrade.recurring}">
    								
    							<input type="hidden" name="cmd" value="_xclick-subscriptions" />
    							<input type="hidden" name="a3" value="{$upgrade.cost_amount}" />
    							<input type="hidden" name="p3" value="{$upgrade.length_amount}" />
    							<input type="hidden" name="t3" value="{$upgrade.lengthUnitPP}" />
    							<input type="hidden" name="src" value="1" />
    							<input type="hidden" name="sra" value="1" />
    							
    							<input type="submit" value="{xen:phrase subscribe}" class="button" />
    						<xen:else />
    							<input type="hidden" name="cmd" value="_xclick" />
    							<input type="hidden" name="amount" value="{$upgrade.cost_amount}" />
    							
    							<input type="submit" value="{xen:phrase purchase}" class="button" />
    						</xen:if>
    						
    						<input type="hidden" name="business" value="{$xenOptions.payPalPrimaryAccount}" />
    						<input type="hidden" name="currency_code" value="{$upgrade.currency}" />
    						<input type="hidden" name="item_name" value="{xen:phrase account_upgrade}: {$upgrade.title} ({$visitor.username})" />
    						<input type="hidden" name="quantity" value="1" />
    						<input type="hidden" name="no_note" value="1" />
    						<input type="hidden" name="no_shipping" value="1" />
    						<input type="hidden" name="custom" value="{$visitor.user_id},{$upgrade.user_upgrade_id},token,{$visitor.csrf_token_page}" />
    						
    						<input type="hidden" name="charset" value="utf-8" />
    						<input type="hidden" name="email" value="{$visitor.email}" />
    						
    						<input type="hidden" name="return" value="{$requestPaths.fullBasePath}{xen:link account/upgrade-purchase}" />
    						<input type="hidden" name="cancel_return" value="{$requestPaths.fullBasePath}{xen:link index}" />
    						<input type="hidden" name="notify_url" value="{$xenOptions.boardUrl}/payment_callback.php" />
    					</form>
    					
    					<div class="upgradeMain">
    						<h4 class="title">{$upgrade.title}</h4>
    						<xen:if is="{$upgrade.description}">
    							<div class="description">{xen:string nl2br, $upgrade.description}</div>
    						</xen:if>
    					</div>
    				</div>
    			</li>
    		</xen:foreach>
    		</ul>
    	</div>
    </xen:if>
    
    I haven't tested this with an actual purchase, but I think it will work. You should test it to make sure it extends upgrades with multiple purchases.
     
  3. Net7

    Net7 Member

    Hey, I was wondering if OP tested this change and if it works?
     

Share This Page