/**
  * @see	\wcf\system\dashboard\box\IDashboardBox::init()
  */
 public function init(DashboardBox $box, IPage $page)
 {
     parent::init($box, $page);
     if (WCF::getUser()->userID && MODULE_PAID_SUBSCRIPTION) {
         // get available subscriptions
         $this->subscriptions = PaidSubscriptionCacheBuilder::getInstance()->getData();
         // get purchased subscriptions
         $userSubscriptionList = new PaidSubscriptionUserList();
         $userSubscriptionList->getConditionBuilder()->add('userID = ?', array(WCF::getUser()->userID));
         $userSubscriptionList->getConditionBuilder()->add('isActive = ?', array(1));
         $userSubscriptionList->readObjects();
         // remove purchased subscriptions
         foreach ($userSubscriptionList as $userSubscription) {
             if (isset($this->subscriptions[$userSubscription->subscriptionID])) {
                 $userSubscription->setSubscription($this->subscriptions[$userSubscription->subscriptionID]);
                 unset($this->subscriptions[$userSubscription->subscriptionID]);
             }
         }
         // remove excluded subscriptions
         foreach ($userSubscriptionList as $userSubscription) {
             if ($userSubscription->getSubscription()->excludedSubscriptionIDs) {
                 foreach (explode(',', $userSubscription->getSubscription()->excludedSubscriptionIDs) as $subscriptionID) {
                     if (isset($this->subscriptions[$subscriptionID])) {
                         unset($this->subscriptions[$subscriptionID]);
                     }
                 }
             }
         }
     }
     $this->fetched();
 }
 /**
  * @see	\wcf\page\AbstractPage::readData()
  */
 public function readData()
 {
     parent::readData();
     // get available subscriptions
     $this->subscriptions = PaidSubscriptionCacheBuilder::getInstance()->getData();
     // get user subscriptions
     $this->userSubscriptionList = new PaidSubscriptionUserList();
     $this->userSubscriptionList->getConditionBuilder()->add('userID = ?', array(WCF::getUser()->userID));
     $this->userSubscriptionList->getConditionBuilder()->add('isActive = ?', array(1));
     $this->userSubscriptionList->readObjects();
     foreach ($this->userSubscriptionList as $userSubscription) {
         if (isset($this->subscriptions[$userSubscription->subscriptionID])) {
             $userSubscription->setSubscription($this->subscriptions[$userSubscription->subscriptionID]);
             unset($this->subscriptions[$userSubscription->subscriptionID]);
         }
     }
     foreach ($this->userSubscriptionList as $userSubscription) {
         if ($userSubscription->getSubscription()->excludedSubscriptionIDs) {
             foreach (explode(',', $userSubscription->getSubscription()->excludedSubscriptionIDs) as $subscriptionID) {
                 if (isset($this->subscriptions[$subscriptionID])) {
                     unset($this->subscriptions[$subscriptionID]);
                 }
             }
         }
     }
 }
 /**
  * @see	\wcf\data\IEditableCachedObject::resetCache()
  */
 public static function resetCache()
 {
     PaidSubscriptionCacheBuilder::getInstance()->reset();
 }
 /**
  * @see	\wcf\page\AbstractPage::assignVariables()
  */
 public function assignVariables()
 {
     parent::assignVariables();
     WCF::getTPL()->assign(array('transactionID' => $this->transactionID, 'username' => $this->username, 'subscriptionID' => $this->subscriptionID, 'availableSubscriptions' => PaidSubscriptionCacheBuilder::getInstance()->getData()));
 }