XF 1.1 Regarding user upgrades

dumindu89

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.
 
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.
 
Top Bottom