Commit | Line | Data |
---|---|---|
4d8036f5 MW |
1 | <?php |
2 | namespace wcf\page; | |
5fdb5c9d | 3 | use wcf\data\paid\subscription\user\PaidSubscriptionUserList; |
4d8036f5 | 4 | use wcf\system\cache\builder\PaidSubscriptionCacheBuilder; |
42f7737a | 5 | use wcf\system\exception\PermissionDeniedException; |
4d8036f5 MW |
6 | use wcf\system\menu\user\UserMenu; |
7 | use wcf\system\WCF; | |
4d8036f5 MW |
8 | |
9 | /** | |
10 | * Shows a list of the available paid subscriptions. | |
11 | * | |
12 | * @author Marcel Werk | |
c839bd49 | 13 | * @copyright 2001-2018 WoltLab GmbH |
4d8036f5 | 14 | * @license GNU Lesser General Public License <http://opensource.org/licenses/lgpl-license.php> |
e71525e4 | 15 | * @package WoltLabSuite\Core\Page |
4d8036f5 MW |
16 | */ |
17 | class PaidSubscriptionListPage extends AbstractPage { | |
18 | /** | |
0fcfe5f6 | 19 | * @inheritDoc |
4d8036f5 MW |
20 | */ |
21 | public $loginRequired = true; | |
22 | ||
23 | /** | |
0fcfe5f6 | 24 | * @inheritDoc |
4d8036f5 | 25 | */ |
058cbd6a | 26 | public $neededModules = ['MODULE_PAID_SUBSCRIPTION']; |
4d8036f5 MW |
27 | |
28 | /** | |
29 | * list of available paid subscriptions | |
1a6e8c52 | 30 | * @var array |
4d8036f5 | 31 | */ |
058cbd6a | 32 | public $subscriptions = []; |
4d8036f5 MW |
33 | |
34 | /** | |
35 | * list of user subscriptions | |
4e25add7 | 36 | * @var PaidSubscriptionUserList |
4d8036f5 | 37 | */ |
058cbd6a | 38 | public $userSubscriptionList = []; |
4d8036f5 | 39 | |
42f7737a | 40 | /** |
23545a91 | 41 | * @inheritDoc |
42f7737a MW |
42 | */ |
43 | public function checkPermissions() { | |
44 | parent::checkPermissions(); | |
45 | ||
46 | if (WCF::getUser()->activationCode != 0) { | |
47 | throw new PermissionDeniedException(); | |
48 | } | |
49 | } | |
50 | ||
4d8036f5 | 51 | /** |
0fcfe5f6 | 52 | * @inheritDoc |
4d8036f5 MW |
53 | */ |
54 | public function readData() { | |
55 | parent::readData(); | |
56 | ||
57 | // get available subscriptions | |
58 | $this->subscriptions = PaidSubscriptionCacheBuilder::getInstance()->getData(); | |
59 | ||
60 | // get user subscriptions | |
61 | $this->userSubscriptionList = new PaidSubscriptionUserList(); | |
058cbd6a MS |
62 | $this->userSubscriptionList->getConditionBuilder()->add('userID = ?', [WCF::getUser()->userID]); |
63 | $this->userSubscriptionList->getConditionBuilder()->add('isActive = ?', [1]); | |
4d8036f5 MW |
64 | $this->userSubscriptionList->readObjects(); |
65 | ||
66 | foreach ($this->userSubscriptionList as $userSubscription) { | |
67 | if (isset($this->subscriptions[$userSubscription->subscriptionID])) { | |
68 | $userSubscription->setSubscription($this->subscriptions[$userSubscription->subscriptionID]); | |
69 | unset($this->subscriptions[$userSubscription->subscriptionID]); | |
70 | } | |
71 | } | |
72 | foreach ($this->userSubscriptionList as $userSubscription) { | |
73 | if ($userSubscription->getSubscription()->excludedSubscriptionIDs) { | |
74 | foreach (explode(',', $userSubscription->getSubscription()->excludedSubscriptionIDs) as $subscriptionID) { | |
75 | if (isset($this->subscriptions[$subscriptionID])) unset($this->subscriptions[$subscriptionID]); | |
37849b1a | 76 | } |
4d8036f5 MW |
77 | } |
78 | } | |
79 | } | |
80 | ||
81 | /** | |
0fcfe5f6 | 82 | * @inheritDoc |
4d8036f5 MW |
83 | */ |
84 | public function assignVariables() { | |
85 | parent::assignVariables(); | |
86 | ||
058cbd6a | 87 | WCF::getTPL()->assign([ |
4d8036f5 MW |
88 | 'subscriptions' => $this->subscriptions, |
89 | 'userSubscriptions' => $this->userSubscriptionList | |
058cbd6a | 90 | ]); |
4d8036f5 MW |
91 | } |
92 | ||
93 | /** | |
0fcfe5f6 | 94 | * @inheritDoc |
4d8036f5 MW |
95 | */ |
96 | public function show() { | |
97 | // set active tab | |
98 | UserMenu::getInstance()->setActiveMenuItem('wcf.user.menu.settings.paidSubscription'); | |
99 | ||
100 | parent::show(); | |
101 | } | |
102 | } |