3 use wcf\data\paid\subscription\user\PaidSubscriptionUserList
;
4 use wcf\system\cache\builder\PaidSubscriptionCacheBuilder
;
5 use wcf\system\exception\PermissionDeniedException
;
6 use wcf\system\menu\user\UserMenu
;
10 * Shows a list of the available paid subscriptions.
13 * @copyright 2001-2019 WoltLab GmbH
14 * @license GNU Lesser General Public License <http://opensource.org/licenses/lgpl-license.php>
15 * @package WoltLabSuite\Core\Page
17 class PaidSubscriptionListPage
extends AbstractPage
{
21 public $loginRequired = true;
26 public $neededModules = ['MODULE_PAID_SUBSCRIPTION'];
31 public $neededPermissions = ['user.profile.payment.canBuyPaidSubscription'];
34 * list of available paid subscriptions
37 public $subscriptions = [];
40 * list of user subscriptions
41 * @var PaidSubscriptionUserList
43 public $userSubscriptionList = [];
48 public function checkPermissions() {
49 parent
::checkPermissions();
51 if (WCF
::getUser()->pendingActivation()) {
52 throw new PermissionDeniedException();
59 public function readData() {
62 // get available subscriptions
63 $this->subscriptions
= PaidSubscriptionCacheBuilder
::getInstance()->getData();
65 // get user subscriptions
66 $this->userSubscriptionList
= new PaidSubscriptionUserList();
67 $this->userSubscriptionList
->getConditionBuilder()->add('userID = ?', [WCF
::getUser()->userID
]);
68 $this->userSubscriptionList
->getConditionBuilder()->add('isActive = ?', [1]);
69 $this->userSubscriptionList
->readObjects();
71 foreach ($this->userSubscriptionList
as $userSubscription) {
72 if (isset($this->subscriptions
[$userSubscription->subscriptionID
])) {
73 $userSubscription->setSubscription($this->subscriptions
[$userSubscription->subscriptionID
]);
74 unset($this->subscriptions
[$userSubscription->subscriptionID
]);
77 foreach ($this->userSubscriptionList
as $userSubscription) {
78 if ($userSubscription->getSubscription()->excludedSubscriptionIDs
) {
79 foreach (explode(',', $userSubscription->getSubscription()->excludedSubscriptionIDs
) as $subscriptionID) {
80 if (isset($this->subscriptions
[$subscriptionID])) unset($this->subscriptions
[$subscriptionID]);
89 public function assignVariables() {
90 parent
::assignVariables();
92 WCF
::getTPL()->assign([
93 'subscriptions' => $this->subscriptions
,
94 'userSubscriptions' => $this->userSubscriptionList
101 public function show() {
103 UserMenu
::getInstance()->setActiveMenuItem('wcf.user.menu.settings.paidSubscription');