66use wcf \data \DatabaseObject ;
77use wcf \data \DatabaseObjectList ;
88use wcf \data \object \type \ObjectTypeCache ;
9- use wcf \event \moderation \DeletedItemsCollecting ;
9+ use wcf \event \moderation \DeletedContentProvidersCollecting ;
1010use wcf \system \event \EventHandler ;
1111use wcf \system \exception \IllegalLinkException ;
12- use wcf \system \moderation \DeletedItemsBoxComponent ;
12+ use wcf \system \moderation \IDeletedContentListViewProvider ;
13+ use wcf \system \request \LinkHandler ;
1314use wcf \system \WCF ;
1415
1516/**
1819 * @author Marcel Werk
1920 * @copyright 2001-2019 WoltLab GmbH
2021 * @license GNU Lesser General Public License <http://opensource.org/licenses/lgpl-license.php>
22+ * @deprecated 6.2 Use `DeletedContentListViewPage` instead.
2123 *
2224 * @extends MultipleLinkPage<DatabaseObjectList<DatabaseObject>>
2325 */
@@ -39,13 +41,20 @@ class DeletedContentListPage extends MultipleLinkPage
3941 */
4042 public $ objectType ;
4143
44+ /**
45+ * @var array<string, IDeletedContentProvider | IDeletedContentListViewProvider>
46+ */
47+ private array $ providers = [];
48+
4249 /**
4350 * @inheritDoc
4451 */
4552 public function readParameters ()
4653 {
4754 parent ::readParameters ();
4855
56+ $ this ->loadProviders ();
57+
4958 if (isset ($ _REQUEST ['objectType ' ])) {
5059 $ this ->objectType = ObjectTypeCache::getInstance ()->getObjectTypeByName (
5160 'com.woltlab.wcf.deletedContent ' ,
@@ -56,26 +65,30 @@ public function readParameters()
5665 throw new IllegalLinkException ();
5766 }
5867 } else {
59- $ link = $ this ->getFirstTypeLink ();
60- if ($ link === null ) {
68+ if ($ this ->providers === []) {
6169 throw new IllegalLinkException ();
6270 }
6371
64- return new RedirectResponse ($ link );
72+ $ provider = \reset ($ this ->providers );
73+ if ($ provider instanceof IDeletedContentListViewProvider) {
74+ return new RedirectResponse (LinkHandler::getInstance ()->getControllerLink (
75+ DeletedContentListViewPage::class,
76+ ['provider ' => $ provider ->getIdentifier ()]
77+ ));
78+ }
79+
80+ $ this ->objectType = ObjectTypeCache::getInstance ()->getObjectTypeByName (
81+ 'com.woltlab.wcf.deletedContent ' ,
82+ \array_key_first ($ this ->providers )
83+ );
6584 }
6685 }
6786
68- private function getFirstTypeLink (): ? string
87+ private function loadProviders (): void
6988 {
70- $ event = new DeletedItemsCollecting ();
89+ $ event = new DeletedContentProvidersCollecting ();
7190 EventHandler::getInstance ()->fire ($ event );
72- $ types = $ event ->getTypes ();
73-
74- if ($ types === []) {
75- return null ;
76- }
77-
78- return reset ($ types )->link ;
91+ $ this ->providers = $ event ->getProviders ();
7992 }
8093
8194 /**
@@ -94,10 +107,36 @@ public function assignVariables()
94107 parent ::assignVariables ();
95108
96109 WCF ::getTPL ()->assign ([
97- 'deletedItemsBox ' => new DeletedItemsBoxComponent ( $ this ->objectType -> objectType ),
110+ 'providerLinks ' => $ this ->getProviderLinks ( ),
98111 'objectType ' => $ this ->objectType ->objectType ,
99112 'resultListTemplateName ' => $ this ->objectType ->getProcessor ()->getTemplateName (),
100113 'resultListApplication ' => $ this ->objectType ->getProcessor ()->getApplication (),
101114 ]);
102115 }
116+
117+ private function getProviderLinks (): array
118+ {
119+ $ links = [];
120+ foreach ($ this ->providers as $ identifier => $ provider ) {
121+ if ($ provider instanceof IDeletedContentListViewProvider) {
122+ $ title = $ provider ->getObjectTypeTitle ();
123+ $ link = LinkHandler::getInstance ()->getControllerLink (DeletedContentListViewPage::class, [
124+ 'provider ' => $ identifier ,
125+ ]);
126+ } else {
127+ $ title = WCF ::getLanguage ()->getDynamicVariable ('wcf.moderation.deletedContent.objectType. ' . $ identifier );
128+ $ link = LinkHandler::getInstance ()->getControllerLink (self ::class, [
129+ 'objectType ' => $ identifier ,
130+ ]);
131+ }
132+
133+ $ links [] = [
134+ 'identifier ' => $ identifier ,
135+ 'title ' => $ title ,
136+ 'link ' => $ link ,
137+ ];
138+ }
139+
140+ return $ links ;
141+ }
103142}
0 commit comments