Merge branch '3.0'
[GitHub/WoltLab/WCF.git] / wcfsetup / install / files / lib / page / PaidSubscriptionListPage.class.php
CommitLineData
4d8036f5
MW
1<?php
2namespace wcf\page;
5fdb5c9d 3use wcf\data\paid\subscription\user\PaidSubscriptionUserList;
4d8036f5 4use wcf\system\cache\builder\PaidSubscriptionCacheBuilder;
42f7737a 5use wcf\system\exception\PermissionDeniedException;
4d8036f5
MW
6use wcf\system\menu\user\UserMenu;
7use 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 */
17class 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}