Show error messages if tainted apps are installed
authorTim Düsterhus <duesterhus@woltlab.com>
Tue, 9 Mar 2021 13:23:22 +0000 (14:23 +0100)
committerTim Düsterhus <duesterhus@woltlab.com>
Wed, 10 Mar 2021 08:33:47 +0000 (09:33 +0100)
wcfsetup/install/files/acp/templates/index.tpl
wcfsetup/install/files/acp/templates/packageList.tpl
wcfsetup/install/files/lib/acp/page/IndexPage.class.php
wcfsetup/install/files/lib/acp/page/PackageListPage.class.php
wcfsetup/install/lang/de.xml
wcfsetup/install/lang/en.xml

index f5ece6681ac70cc445a632518bdbdd215e09b670..ac9f84433496a993b343deb4c1c3bec49e122554 100644 (file)
        <div class="warning">{lang evaluationEndDate=$evaluationEndDate}wcf.acp.package.evaluation.pending{/lang}</div>
 {/foreach}
 
+{foreach from=$taintedApplications item=$taintedApplication}
+       <div class="error">{lang}wcf.acp.package.application.isTainted{/lang}</div>
+{/foreach}
+
 {if TMP_DIR !== WCF_DIR|concat:'tmp/'}
        <p class="error">{lang}wcf.acp.index.tmpBroken{/lang}</p>
 {/if}
index 29a593c17515dc95e8cc1bf257ef1b39b1f18993..74ba53919176592f16bb0fdb06419087ed44bccb 100644 (file)
        {/hascontent}
 </header>
 
+{foreach from=$taintedApplications item=$taintedApplication}
+       <div class="error">{lang}wcf.acp.package.application.isTainted{/lang}</div>
+{/foreach}
+
 {if $recentlyDisabledCustomValues > 0}
        <p class="warning">{lang}wcf.acp.language.item.hasRecentlyDisabledCustomValues{/lang}</p>
 {/if}
                                                <td class="columnID">{@$package->packageID}</td>
                                                <td id="packageName{@$package->packageID}" class="columnTitle" title="{$package->getDescription()}">
                                                        <a href="{link controller='Package' id=$package->packageID}{/link}"><span>{$package}</span></a>
+                                                       {if $taintedApplications[$package->packageID]|isset}
+                                                               <span
+                                                                       class="icon icon16 fa-warning jsTooltip"
+                                                                       title="{lang taintedApplication=null}wcf.acp.package.application.isTainted{/lang}"
+                                                               ></span>
+                                                       {/if}
                                                </td>
                                                <td class="columnText">{if $package->authorURL}<a href="{$package->authorURL}" class="externalURL">{$package->author}</a>{else}{$package->author}{/if}</td>
                                                <td class="columnText">{$package->packageVersion}</td>
index 8e2c8d3b5cbc057ee7bf64d4f9a50d966226399a..5cce1caa9f986304663541094e2c451a3f45e4e4 100755 (executable)
@@ -170,6 +170,15 @@ class IndexPage extends AbstractPage
             }
         }
 
+        $taintedApplications = [];
+        foreach (ApplicationHandler::getInstance()->getApplications() as $application) {
+            if (!$application->isTainted) {
+                continue;
+            }
+
+            $taintedApplications[$application->getPackage()->packageID] = $application;
+        }
+
         $missingLanguageItemsMTime = 0;
         if (ENABLE_DEBUG_MODE && ENABLE_DEVELOPER_TOOLS) {
             $logList = new DevtoolsMissingLanguageItemList();
@@ -191,6 +200,7 @@ class IndexPage extends AbstractPage
             'usersAwaitingApproval' => $usersAwaitingApproval,
             'evaluationExpired' => $evaluationExpired,
             'evaluationPending' => $evaluationPending,
+            'taintedApplications' => $taintedApplications,
             'missingLanguageItemsMTime' => $missingLanguageItemsMTime,
         ]);
     }
index 1457acdba54675e8cc31e51b6226af3798fa0808..61e53dd88deba88ac2f4232f596a717954a5902f 100644 (file)
@@ -4,6 +4,7 @@ namespace wcf\acp\page;
 
 use wcf\data\package\PackageList;
 use wcf\page\SortablePage;
+use wcf\system\application\ApplicationHandler;
 use wcf\system\language\LanguageFactory;
 use wcf\system\WCF;
 
@@ -95,9 +96,19 @@ class PackageListPage extends SortablePage
     {
         parent::assignVariables();
 
+        $taintedApplications = [];
+        foreach (ApplicationHandler::getInstance()->getApplications() as $application) {
+            if (!$application->isTainted) {
+                continue;
+            }
+
+            $taintedApplications[$application->getPackage()->packageID] = $application;
+        }
+
         WCF::getTPL()->assign([
             'recentlyDisabledCustomValues' => LanguageFactory::getInstance()->countRecentlyDisabledCustomValues(),
             'packageID' => $this->packageID,
+            'taintedApplications' => $taintedApplications,
         ]);
     }
 
index 1451e1c815bcb2e649d2eee9c064d3075b27be16..08919a00c08f830dcf749add6eed5f6572d90825 100644 (file)
@@ -2006,6 +2006,7 @@ Die Datenbestände werden sorgfältig gepflegt, aber es ist nicht ausgeschlossen
                Unbekannter Fehler.
        {/if}
 {/implode}]]></item>
+               <item name="wcf.acp.package.application.isTainted"><![CDATA[Die App{if $taintedApplication|isset} <strong>{$taintedApplication->getPackage()->getTitle()}</strong>{/if} ist nicht vollständig installiert. Für eine weitere Verwendung der App ist eine Deinstallation mit anschließender Neuinstallation von Nöten.]]></item>
        </category>
        <category name="wcf.acp.page">
                <item name="wcf.acp.page.add"><![CDATA[Seite hinzufügen]]></item>
index fbf131379d322710fa99f18208e7abd3c5447fec..af0ef198a986f22768b1471551cea830abb7539f 100644 (file)
@@ -1990,6 +1990,7 @@ If you have <strong>already bought the licenses for the listed apps</strong>, th
                Unknown error.
        {/if}
 {/implode}]]></item>
+               <item name="wcf.acp.package.application.isTainted"><![CDATA[The app{if $taintedApplication|isset} <strong>{$taintedApplication->getPackage()->getTitle()}</strong>{/if} is not fully installed. You need to uninstall and then reinstall the app to be able to use it.]]></item>
        </category>
        <category name="wcf.acp.paidSubscription">
                <item name="wcf.acp.paidSubscription.list"><![CDATA[Paid Subscriptions]]></item>