--- /dev/null
+<section class="section">
+ <h2 class="sectionTitle">{lang}wcf.acp.package.update.paidUpgrade{/lang}</h2>
+
+ <p>{lang packageName=$packageName}wcf.acp.package.update.paidUpgrade.description{/lang}</p>
+</section>
+<div class="formSubmit">
+ <a href="https://pluginstore.woltlab.com/file/{$pluginStoreFileID}" target="_blank" class="button buttonPrimary">{lang}wcf.acp.package.update.purchaseRequired.button.purchase{/lang}</a>
+ <button style="display: none">{* dummy button for compatibility with the JS module *}</button>
+</div>
\ No newline at end of file
{
$serverReply = $this->request->getReply();
+ $requiresPaidUpgrade = false;
+ if ($this->updateServer->isWoltLabStoreServer() && !empty($this->packageUpdateVersion['pluginStoreFileID'])) {
+ $requiresPaidUpgrade = ($serverReply['httpHeaders']['wcf-update-server-requires-paid-upgrade'][0] ?? '') === 'true';
+ }
+
+ if ($requiresPaidUpgrade) {
+ WCF::getTPL()->assign([
+ 'packageName' => $this->packageUpdateVersion['packageName'],
+ 'pluginStoreFileID' => $this->packageUpdateVersion['pluginStoreFileID'],
+ ]);
+
+ return WCF::getTPL()->fetch('packageUpdateUnauthorizedPaidUpgrade');
+ }
+
$authInsufficient = (($serverReply['httpHeaders']['wcf-update-server-auth'][0] ?? '') === 'unauthorized');
if (ENABLE_ENTERPRISE_MODE && $authInsufficient && !empty($this->packageUpdateVersion['pluginStoreFileID'])) {
WCF::getTPL()->assign([
'updateServer' => $this->updateServer,
'serverAuthData' => $this->updateServer->getAuthData(),
'serverReply' => $serverReply,
+ 'requiresPaidUpgrade' => $requiresPaidUpgrade,
]);
return WCF::getTPL()->fetch('packageUpdateUnauthorized');
<item name="wcf.acp.package.update.purchaseRequired"><![CDATA[Kostenpflichtiges Paket]]></item>
<item name="wcf.acp.package.update.purchaseRequired.button.purchase"><![CDATA[Im Plugin-Store anzeigen]]></item>
<item name="wcf.acp.package.update.purchaseRequired.description"><![CDATA[Das Paket „{$packageName}“ ist kostenpflichtig und muss zuvor im Plugin-Store erworben werden.]]></item>
+ <item name="wcf.acp.package.update.paidUpgrade"><![CDATA[Kostenpflichtiges Update]]></item>
+ <item name="wcf.acp.package.update.paidUpgrade.description"><![CDATA[Das Update für das Paket „{$packageName}“ ist kostenpflichtig und muss zuvor im Plugin-Store erworben werden.]]></item>
<item name="wcf.acp.package.update.installUpdate"><![CDATA[Dieses Update installieren]]></item>
<item name="wcf.acp.package.update.upgrade"><![CDATA[Dieses Paket wird aktualisiert.]]></item>
<item name="wcf.acp.package.update.newVersion"><![CDATA[{$currentVersion} → <span class="packageUpdateNewVersion">{$newVersion}</span>]]></item>
<item name="wcf.acp.package.update.purchaseRequired"><![CDATA[Paid Package]]></item>
<item name="wcf.acp.package.update.purchaseRequired.button.purchase"><![CDATA[Show in the Plugin-Store]]></item>
<item name="wcf.acp.package.update.purchaseRequired.description"><![CDATA[The paid package “{$packageName}” must be purchased in the Plugin-Store before you can install it.]]></item>
+ <item name="wcf.acp.package.update.purchaseRequired"><![CDATA[Paid Update]]></item>
+ <item name="wcf.acp.package.update.purchaseRequired.description"><![CDATA[The update for the package “{$packageName}” must be purchased in the Plugin-Store before you can install it.]]></item>
<item name="wcf.acp.package.update.installUpdate"><![CDATA[Install this update]]></item>
<item name="wcf.acp.package.update.upgrade"><![CDATA[This package will be upgraded.]]></item>
<item name="wcf.acp.package.update.newVersion"><![CDATA[{$currentVersion} → <span class="packageUpdateNewVersion">{$newVersion}</span>]]></item>